コード例 #1
0
        private void MergeColumnIntoList(DisplayColumn col, ArrayList allColumns)
        {
            int foundIndex = -1;

            for (int i = 0; i < allColumns.Count; i++)
            {
                DisplayColumn oldCol = (DisplayColumn)allColumns [i];
                if (PropNamesMatchStrictly(oldCol, col) ||
                    ((IsDisplayNameColumn(oldCol) || IsDisplayNameColumn(col)) && PropNamesMatch(oldCol, col)))
                {
                    foundIndex = i;
                    break;
                }
            }

            if (foundIndex >= 0)
            {
                allColumns[foundIndex] = ((DisplayColumn)allColumns [foundIndex]).MergePropNames(col);
            }
            else
            {
                int pos = 0;
                while (pos < allColumns.Count && ((DisplayColumn)allColumns [pos]).Index < col.Index)
                {
                    pos++;
                }
                allColumns.Insert(pos, col);
            }
        }
コード例 #2
0
            internal DisplayColumn MergePropNames(DisplayColumn other)
            {
                ArrayList myPropNames = new ArrayList(_descriptor.PropNames);

                string[]  otherPropNames  = other._descriptor.PropNames;
                ArrayList mergedPropNames = null;

                foreach (string propName in otherPropNames)
                {
                    if (!myPropNames.Contains(propName))
                    {
                        if (mergedPropNames == null)
                        {
                            mergedPropNames = (ArrayList)myPropNames.Clone();
                        }
                        mergedPropNames.Add(propName);
                    }
                }
                if (mergedPropNames == null)
                {
                    return(this);
                }
                return(new DisplayColumn(_index, new ColumnDescriptor(
                                             (string[])mergedPropNames.ToArray(typeof(String)), _descriptor.Width)));
            }
コード例 #3
0
 public GroupedPropertyDescriptor(string name, PivotKey outerPivotKey, DisplayColumn displayColumn, PivotKey innerPivotKey)
     : base(name, displayColumn.GetAttributes(MergePivotKeys(outerPivotKey, innerPivotKey)).ToArray())
 {
     OuterPivotKey = outerPivotKey;
     InnerPivotKey = innerPivotKey;
     DisplayColumn = displayColumn;
 }
コード例 #4
0
    static ColumnSetTest()
    {
        IDisplayColumn <SettingsContext> testSingleColumn = new DisplayColumn <SettingsContext> {
            Title = "Test", Selector = x => x.Values
        };

        var columnSets = new List <ColumnSet <SettingsContext> >
        {
            new ColumnSet <SettingsContext>
            {
                TypeHandled = typeof(SettingsContext),
                Columns     = new List <IDisplayColumn <SettingsContext> >
                {
                    new DisplayColumn <SettingsContext> {
                        Title = "Column 1", Order = 1, Selector = x => x.IsReadOnly
                    },
                    new DisplayColumn <SettingsContext> {
                        Title = "Column 2", Order = 2, Selector = x => x.IsSynchronized
                    },
                    new DisplayColumn <SettingsContext> {
                        Title = "Column 3", Order = 3, Selector = x => x.Keys
                    }
                }
            }
        };
    }
コード例 #5
0
 public GroupedPropertyDescriptor(string name, PivotKey outerPivotKey, DisplayColumn displayColumn, PivotKey innerPivotKey)
     : base(name, displayColumn.GetAttributes(MergePivotKeys(outerPivotKey, innerPivotKey)).ToArray())
 {
     OuterPivotKey = outerPivotKey;
     InnerPivotKey = innerPivotKey;
     DisplayColumn = displayColumn;
 }
コード例 #6
0
 public static bool IsCanonical(DisplayColumn displayColumn)
 {
     if (displayColumn.ColumnSpec.Hidden && null != displayColumn.ColumnSpec.SortDirection)
     {
         return(false);
     }
     return(true);
 }
コード例 #7
0
        public override object GetValue(object component)
        {
            var outerRowItem = component as RowItem;

            if (null == outerRowItem)
            {
                return(null);
            }
            var reportRow = outerRowItem.Value as GroupedRow;

            if (null == reportRow)
            {
                return(null);
            }
            IEnumerable <RowItem> innerRows;

            if (null == OuterPivotKey)
            {
                innerRows = reportRow.InnerRows;
            }
            else
            {
                RowItem innerRow;
                if (!reportRow.TryGetInnerRow(OuterPivotKey, out innerRow))
                {
                    return(null);
                }
                innerRows = new[] { innerRow };
            }

            var values = new List <object>();

            foreach (var innerRow in innerRows)
            {
                var value = DisplayColumn.GetValue(innerRow, InnerPivotKey);
                if (null != value)
                {
                    values.Add(value);
                }
            }
            var distinctValues = values.Distinct().ToArray();

            if (distinctValues.Length == 0)
            {
                return(null);
            }
            else if (distinctValues.Length == 1)
            {
                return(distinctValues[0]);
            }
            else
            {
                return(null);
            }
        }
コード例 #8
0
 public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = base.GetHashCode();
         hashCode = (hashCode * 397) ^ DisplayColumn.GetHashCode();
         hashCode = (hashCode * 397) ^ (OuterPivotKey != null ? OuterPivotKey.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (InnerPivotKey != null ? InnerPivotKey.GetHashCode() : 0);
         return(hashCode);
     }
 }
コード例 #9
0
 private static bool IsDisplayNameColumn(DisplayColumn col)
 {
     foreach (string propName in col.PropNames)
     {
         if (propName == "DisplayName")
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #10
0
        private static bool PropNamesMatch(DisplayColumn col1, DisplayColumn col2)
        {
            ArrayList props2 = new ArrayList(col2.PropNames);

            foreach (string propName in col1.PropNames)
            {
                if (props2.Contains(propName))
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #11
0
ファイル: ChooseColumnsTab.cs プロジェクト: zrolfs/pwiz
 private ListViewItem MakeListViewColumnItem(DisplayColumn displayColumn)
 {
     string listItemText = displayColumn.GetColumnCaption(null, ColumnCaptionType.localized);
     
     var listViewItem = new ListViewItem {Text = listItemText };
     Debug.Assert(!displayColumn.ColumnSpec.Hidden);
     if (!string.IsNullOrEmpty(displayColumn.ColumnSpec.Caption))
     {
         listViewItem.Font = new Font(listViewItem.Font, FontStyle.Bold | listViewItem.Font.Style);
         DataSchema dataSchema = displayColumn.DataSchema;
         var columnCaption = dataSchema.GetColumnCaption(displayColumn.ColumnDescriptor);
         listViewItem.ToolTipText = columnCaption.GetCaption(dataSchema.DataSchemaLocalizer);
     }
     return listViewItem;
 }
コード例 #12
0
        /**
         * Adds a column to the specified map of columns.
         */

        private void AddColumnToList(HashMap map, string key, DisplayColumn column)
        {
            ArrayList columns = (ArrayList)map [key];

            if (columns == null)
            {
                columns   = new ArrayList();
                map [key] = columns;
            }
            int pos = 0;

            while (pos < columns.Count && ((DisplayColumn)columns [pos]).Index < column.Index)
            {
                pos++;
            }
            columns.Insert(pos, column);
        }
コード例 #13
0
        public void RemoveAvailableColumn(string resourceType, string propNames)
        {
            string    key     = (resourceType == null) ? "" : resourceType;
            ArrayList columns = (ArrayList)_availableColumns [key];

            if (columns != null)
            {
                for (int i = 0; i < columns.Count; i++)
                {
                    DisplayColumn col = (DisplayColumn)columns [i];
                    if (col.Descriptor.PropNames [0] == propNames)
                    {
                        columns.RemoveAt(i);
                        break;
                    }
                }
            }
        }
コード例 #14
0
        /**
         * Registers a column that is not by default included in the list of
         * visible columns for the specified resource type, but can always be
         * added to the list (even if none of the resources in the list have that
         * property).
         */

        public void RegisterAvailableColumn(string resourceType, ColumnDescriptor descriptor)
        {
            if (resourceType != null && !Core.ResourceStore.ResourceTypes.Exist(resourceType))
            {
                throw new ArgumentException("Invalid resource type " + resourceType, "resourceType");
            }
            PropNamesToIDs(descriptor.PropNames, false);    // validates the column descriptor

            DisplayColumn col = new DisplayColumn(-1, descriptor);

            if (resourceType == null)
            {
                AddColumnToList(_availableColumns, "", col);
            }
            else
            {
                AddColumnToList(_availableColumns, resourceType, col);
            }
        }
コード例 #15
0
 public static bool IsCanonical(DisplayColumn displayColumn)
 {
     if (displayColumn.ColumnSpec.Hidden && null != displayColumn.ColumnSpec.SortDirection)
     {
         return false;
     }
     return true;
 }
コード例 #16
0
 public GroupedPropertyDescriptor(string name, DisplayColumn displayColumn, PivotKey innerPivotKey)
     : this(name, null, displayColumn, innerPivotKey)
 {
 }
コード例 #17
0
 private ListViewItem MakeListViewColumnItem(DisplayColumn displayColumn)
 {
     string listItemText = displayColumn.GetColumnCaption(null, ColumnCaptionType.localized);
     
     var listViewItem = new ListViewItem {Text = listItemText };
     Debug.Assert(!displayColumn.ColumnSpec.Hidden);
     if (!string.IsNullOrEmpty(displayColumn.ColumnSpec.Caption))
     {
         listViewItem.Font = new Font(listViewItem.Font, FontStyle.Bold | listViewItem.Font.Style);
         DataSchema dataSchema = displayColumn.DataSchema;
         ColumnCaption columnCaption = dataSchema.GetColumnCaption(displayColumn.ColumnDescriptor);
         listViewItem.ToolTipText = dataSchema.GetLocalizedColumnCaption(columnCaption);
     }
     return listViewItem;
 }
コード例 #18
0
 public GroupedPropertyDescriptor(string name, DisplayColumn displayColumn, PivotKey innerPivotKey) : this(name, null, displayColumn, innerPivotKey)
 {
 }