Exemplo n.º 1
0
        private AbstractLogColumnPresenter AddColumn(ILogFileColumn column)
        {
            var columnPresenter = CreatePresenterFor(column);

            // The 2nd column is reserved for the data source name which hasn't been
            // ported to the new ILogFileColumnPresenter interface just yet
            int columnIndex;

            if (_columnPresenters.Count == 0)
            {
                columnIndex = 0;
            }
            else if (Equals(column, LogFileColumns.Message))
            {
                columnIndex = ColumnDefinitions.IndexOf(_messageColumnDefinition);
            }
            else
            {
                columnIndex = _columnPresenters.Count + 1;
            }

            columnPresenter.SetValue(RowProperty, 0);
            columnPresenter.SetValue(ColumnProperty, columnIndex);
            _columnPresenters.Add(columnPresenter.Column, columnPresenter);

            var columnDefinition = new ColumnDefinition {
                Width = new GridLength(value: 1, type: GridUnitType.Auto)
            };

            _columnDefinitionsByColumn.Add(columnPresenter.Column, columnDefinition);
            _columnsByColumnDefinition.Add(columnDefinition, columnPresenter.Column);

            int insertionIndex;

            if (_messageColumnDefinition != null)
            {
                insertionIndex = ColumnDefinitions.IndexOf(_messageColumnDefinition);
            }
            else
            {
                insertionIndex = ColumnDefinitions.Count;
            }
            ColumnDefinitions.Insert(insertionIndex, columnDefinition);

            return(columnPresenter);
        }
Exemplo n.º 2
0
        private void RemoveColumn(ILogFileColumn column)
        {
            if (!_columnPresenters.Remove(column))
            {
                Log.WarnFormat("Unable to remove column '{0}' it's not presented", column);
                return;
            }

            if (!_columnDefinitionsByColumn.TryGetValue(column, out var columnDefinition))
            {
                Log.ErrorFormat("Inconsistency detected: A column presenter exists, but not column definition for column '{0}'!", column);
                return;
            }

            var firstIndex = ColumnDefinitions.IndexOf(columnDefinition);

            _columnDefinitionsByColumn.Remove(column);
            _columnsByColumnDefinition.Remove(columnDefinition);
            ColumnDefinitions.Remove(columnDefinition);

            OffsetColumnsFrom(firstIndex, -1);
        }
Exemplo n.º 3
0
        public LogEntryListView()
        {
            var textSettings = TextSettings.Default;

            RowDefinitions.Add(new RowDefinition {
                Height = new GridLength(value: 1, type: GridUnitType.Star)
            });
            RowDefinitions.Add(new RowDefinition {
                Height = new GridLength(value: 1, type: GridUnitType.Auto)
            });

            _verticalScrollBar = new FlatScrollBar
            {
                Name      = "PART_VerticalScrollBar",
                Thickness = 18
            };
            _verticalScrollBar.ValueChanged += VerticalScrollBarOnValueChanged;
            _verticalScrollBar.Scroll       += VerticalScrollBarOnScroll;
            _verticalScrollBar.SetValue(RowProperty, value: 0);
            _verticalScrollBar.SetValue(ColumnProperty, value: 6);

            _horizontalScrollBar = new FlatScrollBar
            {
                Name        = "PART_HorizontalScrollBar",
                Orientation = Orientation.Horizontal,
                Thickness   = 18
            };
            _horizontalScrollBar.SetValue(RowProperty, value: 1);
            _horizontalScrollBar.SetValue(ColumnProperty, value: 0);
            _horizontalScrollBar.SetValue(ColumnSpanProperty, value: 6);

            _columnPresenterFactories = new Dictionary <ILogFileColumn, Func <TextSettings, AbstractLogColumnPresenter> >
            {
                { LogFileColumns.DeltaTime, settings => new DeltaTimeColumnPresenter(settings) },
                { LogFileColumns.ElapsedTime, settings => new ElapsedTimeColumnPresenter(settings) },
                { LogFileColumns.OriginalLineNumber, settings => new OriginalLineNumberColumnPresenter(settings) },
                { LogFileColumns.LogLevel, settings => new  LogLevelColumnPresenter(settings) },
                { LogFileColumns.Message, settings => new MessageColumnPresenter(settings) },
                { LogFileColumns.Timestamp, settings => new TimestampColumnPresenter(settings) }
            };
            _columnPresenters          = new Dictionary <ILogFileColumn, AbstractLogColumnPresenter>();
            _columnDefinitionsByColumn = new Dictionary <ILogFileColumn, ColumnDefinition>();
            _columnsByColumnDefinition = new Dictionary <ColumnDefinition, ILogFileColumn>();

            _lineNumberColumn = (OriginalLineNumberColumnPresenter)AddColumn(LogFileColumns.OriginalLineNumber);
            _lineNumberColumn.SetValue(MarginProperty, new Thickness(left: 5, top: 0, right: 5, bottom: 0));

            _dataSourceCanvas = new DataSourceCanvas(textSettings);
            _dataSourceCanvas.SetValue(RowProperty, value: 0);
            _dataSourceCanvas.SetValue(ColumnProperty, value: 1);
            _dataSourceCanvas.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0));
            ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(value: 1, type: GridUnitType.Auto)
            });

            _deltaTimesColumn            = (DeltaTimeColumnPresenter)AddColumn(LogFileColumns.DeltaTime);
            _deltaTimesColumn.Visibility = Visibility.Collapsed;
            _deltaTimesColumn.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0));

            _elapsedTimeColumn            = (ElapsedTimeColumnPresenter)AddColumn(LogFileColumns.ElapsedTime);
            _elapsedTimeColumn.Visibility = Visibility.Collapsed;
            _elapsedTimeColumn.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0));

            _fixedColumns = _columnPresenters.Keys.ToList();

            _messageColumnDefinition = new ColumnDefinition {
                Width = new GridLength(value: 1, type: GridUnitType.Star)
            };
            ColumnDefinitions.Add(_messageColumnDefinition);
            var messageColumnIndex = ColumnDefinitions.IndexOf(_messageColumnDefinition);

            PartTextCanvas = new TextCanvas(_horizontalScrollBar, _verticalScrollBar, textSettings);
            PartTextCanvas.SetValue(RowProperty, value: 0);
            PartTextCanvas.SetValue(ColumnProperty, value: messageColumnIndex);
            PartTextCanvas.MouseWheelDown        += TextCanvasOnMouseWheelDown;
            PartTextCanvas.MouseWheelUp          += TextCanvasOnMouseWheelUp;
            PartTextCanvas.SizeChanged           += TextCanvasOnSizeChanged;
            PartTextCanvas.VisibleLinesChanged   += TextCanvasOnVisibleLinesChanged;
            PartTextCanvas.RequestBringIntoView  += TextCanvasOnRequestBringIntoView;
            PartTextCanvas.VisibleSectionChanged += TextCanvasOnVisibleSectionChanged;
            PartTextCanvas.OnSelectionChanged    += TextCanvasOnOnSelectionChanged;

            ChangeTextSettings(textSettings);

            var separator = new Rectangle
            {
                Fill  = new SolidColorBrush(Color.FromRgb(225, 228, 232)),
                Width = 2
            };

            separator.SetValue(RowProperty, value: 0);
            separator.SetValue(ColumnProperty, value: messageColumnIndex);
            separator.SetValue(MarginProperty, new Thickness(left: 0, top: 0, right: 5, bottom: 0));
            ColumnDefinitions.Add(new ColumnDefinition {
                Width = new GridLength(value: 1, type: GridUnitType.Auto)
            });

            Children.Add(_lineNumberColumn);
            Children.Add(_dataSourceCanvas);
            Children.Add(_deltaTimesColumn);
            Children.Add(_elapsedTimeColumn);
            Children.Add(separator);
            Children.Add(PartTextCanvas);
            Children.Add(_verticalScrollBar);
            Children.Add(_horizontalScrollBar);

            _timer = new DispatcherTimer(DispatcherPriority.Normal)
            {
                Interval = MaximumRefreshInterval,
            };
            _timer.Tick += OnTimer;
            Loaded      += OnLoaded;
            Unloaded    += OnUnloaded;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Delete compoenent from the rung
        /// </summary>
        /// <param name="component">Component to be deleted</param>
        public RungUI Remove(ComponentUIBase component)
        {
            ComponentGridPosition _component = _Components.Where(x => x.Component == component).First();


            if (_LogicalRung.Components.Where(x => x.LeftLide == component.LogicComponent.LeftLide && x.RightLide == component.LogicComponent.RightLide).Count() > 1)
            {
                foreach (ComponentGridPosition item in GetAllBetween(component.LogicComponent.LeftLide, component.LogicComponent.RightLide).Where(x => x.Row > _component.Row))
                {
                    item.SetPossition(item.Row - 1, item.Column);
                }
            }
            else
            {
                IEnumerable <ComponentGridPosition> RR = _Components.Where(x => x.Component.LogicComponent.RightLide == component.LogicComponent.RightLide && x != _component);

                if (RR.Count() > 0)
                {
                    IEnumerable <ComponentGridPosition> column_components = _Components.Where(x => x.Column == _component.Column);

                    if (column_components.Count() == 1)
                    {
                        foreach (ComponentGridPosition item in _Components.Where(x => x.Column > _component.Column))
                        {
                            item.SetPossition(item.Row, item.Column - 1);
                        }
                    }
                    else
                    {
                        foreach (ComponentGridPosition item in GetAllBetween(component.LogicComponent.LeftLide, component.LogicComponent.RightLide).Where(x => x.Row > _component.Row))
                        {
                            item.SetPossition(item.Row - 1, item.Column);
                        }
                    }
                }
                else
                {
                    foreach (ComponentGridPosition item in _Components.Where(x => x.Component.LogicComponent.LeftLide == component.LogicComponent.RightLide))
                    {
                        item.SetPossition(item.Row, item.Column - 1);
                    }
                }
            }

            _Components.Remove(_component);
            _LogicalRung.Remove(component.LogicComponent);
            Children.Remove(component);

            var row = RowDefinitions.Where(x => _Components.Where(y => (y.Row == RowDefinitions.IndexOf(x))).Count() == 0);

            if (row.Count() != 0)
            {
                int row_index = RowDefinitions.IndexOf(row.First());
                foreach (ComponentGridPosition item in _Components.Where(x => x.Row > row_index))
                {
                    item.SetPossition(item.Row - 1, item.Column);
                }
                RowDefinitions.RemoveAt(row_index);
            }

            var column = ColumnDefinitions.Where(x => _Components.Where(y => (y.Column == ColumnDefinitions.IndexOf(x))).Count() == 0);

            if (column.Count() != 0)
            {
                int column_index = ColumnDefinitions.IndexOf(column.First());
                if (_component.Column >= ColumnDefinitions.Count - _OutputBlockLegth)
                {
                    _OutputBlockLegth--;
                }
                foreach (ComponentGridPosition item in _Components.Where(x => x.Column > column_index))
                {
                    item.SetPossition(item.Row, item.Column - 1);
                }
                ColumnDefinitions.RemoveAt(column_index);
            }

            return(this);
        }