Exemple #1
0
        public void OnModelUpdated(FastGridControl target, IUnityContainer container)
        {
            var dataGrid = container.Resolve <FastGridControl>(Key);

            if (target.Model == null || target != dataGrid)
            {
                return;
            }

            var locationGrid = container.Resolve <Grid>(Key);

            if (locationGrid == null)
            {
                return;
            }

            var rowCount = target.Model.RowCount - target.Model.GetHiddenRows(target).Count;
            var colCount = target.Model.ColumnCount;

            UpdateLocationGridDefinisions(locationGrid, locationGrid.RenderSize, rowCount, colCount);

            var viewport = container.Resolve <Rectangle>(Key);

            RecalculateViewport(viewport, target);

            var colorMap = CreateColorMap(target);

            UpdateLocationGridColors(locationGrid, colorMap, viewport);

            target.NotifyRefresh();
        }
Exemple #2
0
        public void OnSelectedCellChanged(FastGridControl target, IUnityContainer container)
        {
            var dataGrid = container.Resolve <FastGridControl>(Key);

            if (target == dataGrid)
            {
                return;
            }

            var targetCell = new FastGridCellAddress(target.CurrentCell.Row, target.CurrentCell.Column);

            if (!targetCell.Equals(dataGrid.CurrentCell))
            {
                if (dataGrid.Model == null)
                {
                    return;
                }

                if (dataGrid.Model.RowCount < targetCell.Row || dataGrid.Model.ColumnCount < targetCell.Column)
                {
                    return;
                }

                dataGrid.CurrentCell = targetCell;

                if (target.GetSelectedModelCells().Aggregate(false, (r, c) => r |= dataGrid.AddSelectedCell(c)))
                {
                    dataGrid.InvalidateAll();
                }
            }

            var valuteTextBox = container.ResolveAll <RichTextBox>();
        }
        private static List <Dictionary <int, Color?> > CreateColorMap(FastGridControl dataGrid)
        {
            var ret = new List <Dictionary <int, Color?> >();

            if (dataGrid.Model == null)
            {
                return(ret);
            }

            var model    = dataGrid.Model as DiffGridModel;
            var rowCount = model.RowCount - model.GetHiddenRows(dataGrid).Count;

            for (int i = 0; i < rowCount; i++)
            {
                var columnColorMap = new Dictionary <int, Color?>();
                for (int j = 0, ccount = dataGrid.Model.ColumnCount; j < ccount; j++)
                {
                    columnColorMap.Add(j, model.GetCell(dataGrid, i, j, true)?.BackgroundColor);
                }

                ret.Add(columnColorMap);
            }

            return(ret);
        }
        private void DataGrid_SelectedCellsChanged(object sender, FastWpfGrid.SelectionChangedEventArgs e)
        {
            var grid = copyTargetGrid = sender as FastGridControl;

            if (grid == null)
            {
                return;
            }

            copyTargetGrid = grid;

            DataGridEventDispatcher.DispatchSelectedCellChangeEvent(grid, container);

            if (!SrcDataGrid.CurrentCell.Row.HasValue || !DstDataGrid.CurrentCell.Row.HasValue)
            {
                return;
            }

            if (!SrcDataGrid.CurrentCell.Column.HasValue || !DstDataGrid.CurrentCell.Column.HasValue)
            {
                return;
            }

            if (SrcDataGrid.Model == null || DstDataGrid.Model == null)
            {
                return;
            }

            var srcValue =
                (SrcDataGrid.Model as DiffGridModel).GetCellText(SrcDataGrid.CurrentCell.Row.Value, SrcDataGrid.CurrentCell.Column.Value, true);
            var dstValue =
                (DstDataGrid.Model as DiffGridModel).GetCellText(DstDataGrid.CurrentCell.Row.Value, DstDataGrid.CurrentCell.Column.Value, true);

            UpdateValueDiff(srcValue, dstValue);
        }
Exemple #5
0
        public void OnColumnHeaderReset(FastGridControl target, IUnityContainer container)
        {
            var dataGrid = container.Resolve <FastGridControl>(Key);

            (dataGrid.Model as DiffGridModel).SetColumnHeader(0);

            dataGrid.NotifyRowArrangeChanged();
        }
Exemple #6
0
        public void OnRowHeaderReset(FastGridControl target, IUnityContainer container)
        {
            var dataGrid = container.Resolve <FastGridControl>(Key);

            (dataGrid.Model as DiffGridModel).SetRowHeader(-1);

            dataGrid.NotifyColumnArrangeChanged();
            DataGridEventDispatcher.DispatchModelUpdateEvent(dataGrid, container);
        }
Exemple #7
0
        private void CopyRow_Click(object sender, RoutedEventArgs e)
        {
            // 复制整行
            FastGridControl selectGridControl = null;

            var menuItem = sender as MenuItem;

            if (menuItem != null)
            {
                selectGridControl = ((ContextMenu)menuItem.Parent).PlacementTarget as FastGridControl;
            }

            if (selectGridControl != null)
            {
                int?row = selectGridControl.CurrentRow;
                int?col = selectGridControl.CurrentColumn;

                var selectModel = selectGridControl.Model as DiffGridModel;
                if (selectModel == null)
                {
                    return;
                }

                var diffType = selectModel.DiffType;

                // 修改 diff 数据(这部分可以只用来刷新表现)
                foreach (var excelCellDiff in SheetDiff.Rows[row.Value].Cells)
                {
                    var diffCell = excelCellDiff.Value;


                    if (diffType == DiffType.Source)
                    {
                        // 从左复制到右
                        diffCell.DstCell.Value = diffCell.SrcCell.Value;
                        diffCell.MergeStatus   = ExcelCellMergeStatus.UseLeft;
                    }
                    else
                    {
                        // 从右复制到左
                        diffCell.SrcCell.Value = diffCell.DstCell.Value;
                        diffCell.MergeStatus   = ExcelCellMergeStatus.UseRight;
                    }
                }


                // diffCell.Status = ExcelCellStatus.None;

                RefreshBySheet(false, true);


                UpdateLayout();
            }
        }
Exemple #8
0
        public void OnSizeChanged(FastGridControl target, IUnityContainer container, SizeChangedEventArgs e)
        {
            var dataGrid = container.Resolve <FastGridControl>(Key);

            if (dataGrid == null || dataGrid != target)
            {
                return;
            }

            RecalculateViewport(container.Resolve <Rectangle>(Key), dataGrid);
        }
        private void RecalculateViewport(Rectangle viewport, FastGridControl dataGrid)
        {
            if (dataGrid.VisibleColumnCount <= 0 || dataGrid.VisibleRowCount <= 0)
            {
                return;
            }

            Grid.SetColumn(viewport, dataGrid.FirstVisibleColumnScrollIndex);
            Grid.SetColumnSpan(viewport, dataGrid.VisibleColumnCount);
            Grid.SetRow(viewport, dataGrid.FirstVisibleRowScrollIndex);
            Grid.SetRowSpan(viewport, dataGrid.VisibleRowCount);
        }
Exemple #10
0
        public void OnScrolled(FastGridControl target, IUnityContainer container)
        {
            var dataGrid = container.Resolve <FastGridControl>(Key);

            if (dataGrid == null || dataGrid == target)
            {
                return;
            }

            SyncScroll(target, dataGrid);
            RecalculateViewport(container.Resolve <Rectangle>(Key), dataGrid);
        }
Exemple #11
0
        private void DataGrid_SelectedCellsChanged(object sender, FastWpfGrid.SelectionChangedEventArgs e)
        {
            var grid = copyTargetGrid = sender as FastGridControl;

            if (grid == null)
            {
                return;
            }

            copyTargetGrid = grid;

            var args = new DiffViewEventArgs <FastGridControl>(sender as FastGridControl, container);

            DataGridEventDispatcher.Instance.DispatchSelectedCellChangeEvent(args);

            if (!SrcDataGrid.CurrentCell.Row.HasValue || !DstDataGrid.CurrentCell.Row.HasValue)
            {
                return;
            }

            if (!SrcDataGrid.CurrentCell.Column.HasValue || !DstDataGrid.CurrentCell.Column.HasValue)
            {
                return;
            }

            if (SrcDataGrid.Model == null || DstDataGrid.Model == null)
            {
                return;
            }

            var srcValue =
                (SrcDataGrid.Model as DiffGridModel).GetCellText(SrcDataGrid.CurrentCell.Row.Value, SrcDataGrid.CurrentCell.Column.Value, true);
            var dstValue =
                (DstDataGrid.Model as DiffGridModel).GetCellText(DstDataGrid.CurrentCell.Row.Value, DstDataGrid.CurrentCell.Column.Value, true);

            UpdateValueDiff(srcValue, dstValue);

            if (App.Instance.Setting.AlwaysExpandCellDiff)
            {
                var a = new DiffViewEventArgs <RichTextBox>(null, container, TargetType.First);
                ValueTextBoxEventDispatcher.Instance.DispatchGotFocusEvent(a);
            }

            int?row    = DstDataGrid.CurrentCell.Row;
            int?column = DstDataGrid.CurrentCell.Column;

            if (mergeWindow != null)
            {
                mergeWindow.SetCurrentCell(row, column);
            }
        }
Exemple #12
0
        public void DataGrid_SelectedCellsChanged(object sender, FastWpfGrid.SelectionChangedEventArgs e)
        {
            var grid = copyTargetGrid = sender as FastGridControl;

            if (grid == null)
            {
                return;
            }

            copyTargetGrid = grid;

            var args = new DiffViewEventArgs <FastGridControl>(sender as FastGridControl, container);

            DataGridEventDispatcher.Instance.DispatchSelectedCellChangeEvent(args);


            if (!MergeDataGrid.CurrentCell.Row.HasValue)
            {
                return;
            }

            if (!MergeDataGrid.CurrentCell.Column.HasValue)
            {
                return;
            }

            if (MergeDataGrid.Model == null)
            {
                return;
            }

            var value = (MergeDataGrid.Model as DiffGridModel).GetCellText(MergeDataGrid.CurrentCell.Row.Value, MergeDataGrid.CurrentCell.Column.Value, true);

            UpdateValue(value);

            if (App.Instance.Setting.AlwaysExpandCellDiff)
            {
                var a = new DiffViewEventArgs <RichTextBox>(null, container, TargetType.First);
                ValueTextBoxEventDispatcher.Instance.DispatchGotFocusEvent(a);
            }

            if (_diffView != null)
            {
                _diffView.SetCurrentCell(MergeDataGrid.CurrentCell.Row, MergeDataGrid.CurrentCell.Column);
            }
        }
Exemple #13
0
        private void CopyRow_Click(object sender, RoutedEventArgs e)
        {
            // 复制整行
            FastGridControl selectGridControl = null;

            var menuItem = sender as MenuItem;

            if (menuItem != null)
            {
                selectGridControl = ((ContextMenu)menuItem.Parent).PlacementTarget as FastGridControl;
            }

            if (selectGridControl != null)
            {
                int?row = selectGridControl.CurrentRow;
                int?col = selectGridControl.CurrentColumn;

                var selectModel = selectGridControl.Model as DiffGridModel;
                if (selectModel == null)
                {
                    return;
                }

                var diffType = selectModel.DiffType;

                if (diffType == DiffType.Source)
                {
                    // 左から右へマージ
                    SheetDiff.Merge(row.Value, ExcelCellMergeStatus.UseLeft);
                }
                else
                {
                    // 右から左へマージ
                    SheetDiff.Merge(row.Value, ExcelCellMergeStatus.UseRight);
                }

                RefreshBySheet(false, true);


                UpdateLayout();
            }
        }
 public static void DispatchScrollEvnet(FastGridControl target, IUnityContainer container)
 {
     Listeners.ForEach(l => l.OnScrolled(target, container));
 }
 public static void DispatchColumnHeaderChangeEvent(FastGridControl target, IUnityContainer container)
 {
     Listeners.ForEach(l => l.OnColumnHeaderChanged(target, container));
 }
 public static void DispatchSizeChangeEvent(FastGridControl target, IUnityContainer contaier, SizeChangedEventArgs e)
 {
     Listeners.ForEach(l => l.OnSizeChanged(target, contaier, e));
 }
 public static void DispatchModelUpdateEvent(FastGridControl target, IUnityContainer container)
 {
     Listeners.ForEach(l => l.OnModelUpdated(target, container));
 }
 public static void DispatchSelectedCellChangeEvent(FastGridControl target, IUnityContainer container)
 {
     Listeners.ForEach(l => l.OnSelectedCellChanged(target, container));
 }
 private void SyncScroll(FastGridControl src, FastGridControl dst)
 {
     dst.Scroll(src.FirstVisibleRowScrollIndex, src.FirstVisibleColumnScrollIndex, src.VerticalScrollBarOffset, src.HorizontalScrollBarOffset);
 }
 public static void DispatchRowHeaderResetEvent(FastGridControl target, IUnityContainer container)
 {
     Listeners.ForEach(l => l.OnRowHeaderReset(target, container));
 }