예제 #1
0
        void AddNotification(long offset, IStructuralNodeTemplate template, string message)
        {
            if (_notifications == null)
            {
                _notifications = new List <Notification>();
            }

            _notifications.Add(offset, template, message);
        }
예제 #2
0
        public Component(string name, IStructuralNodeTemplate template, long offset)
        {
            if (template == null)
            {
                throw new ArgumentNullException(nameof(template));
            }

            Name     = name;
            Template = template;
            Offset   = offset;
        }
예제 #3
0
        public Notification(long offset, IStructuralNodeTemplate template, string message)
        {
            if (template == null)
            {
                throw new ArgumentNullException(nameof(template));
            }
            if (string.IsNullOrEmpty(message))
            {
                throw new ArgumentNullException(nameof(message));
            }

            Offset   = offset;
            Template = template;
            Message  = message;
        }
예제 #4
0
        public RepeatingNodeTemplate(IStructuralNodeTemplate itemTemplate, int itemCount, Func <int, long, string> getName, long itemWidthOverride)
        {
            if (itemTemplate == null)
            {
                throw new ArgumentNullException(nameof(itemTemplate));
            }
            if (getName == null)
            {
                throw new ArgumentNullException(nameof(getName));
            }

            _itemTemplate = itemTemplate;
            _getName      = getName;
            _itemCount    = itemCount;
            _itemWidth    = itemWidthOverride;
        }
예제 #5
0
        public TemplatedStructuralNode(IDataSource data, IStructuralNode?parent, string name, IStructuralNodeTemplate template, long offset)
            : base(parent)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (template == null)
            {
                throw new ArgumentNullException(nameof(template));
            }

            _data     = data;
            Name      = name;
            _template = template;
            _offset   = offset;
        }
예제 #6
0
        public void Add(PositionMode mode, long offset, string name, IStructuralNodeTemplate template)
        {
            if (template == null)
            {
                throw new ArgumentNullException(nameof(template));
            }

            long relativeOffset;

            switch (mode)
            {
            case PositionMode.RelativeToLast:
                if (_list.Count == 0)
                {
                    relativeOffset = 0;
                }
                else
                {
                    var index             = _list.Count - 1;
                    var previousComponent = _list[index];
                    relativeOffset = previousComponent.Offset + previousComponent.Template.Width;
                }
                break;

            case PositionMode.RelativeToParent:
                relativeOffset = 0;
                break;

            default: throw new ArgumentOutOfRangeException(nameof(mode));
            }

            relativeOffset += offset;

            _list.Add(new Component(name, template, relativeOffset));

            relativeOffset += template.Width;

            if (relativeOffset > Width)
            {
                Width = relativeOffset;
            }
        }
예제 #7
0
 public static void Add(this IList <Notification> notifications, long offset, IStructuralNodeTemplate template, string message, params object[] args)
 => notifications.Add(new Notification(offset, template, string.Format(CultureInfo.CurrentCulture, message, args)));
예제 #8
0
 public static void Add(this IList <Notification> notifications, long offset, IStructuralNodeTemplate template, string message)
 => notifications.Add(new Notification(offset, template, message));
예제 #9
0
 public void Add(string name, IStructuralNodeTemplate template) => Add(PositionMode.RelativeToLast, 0, name, template);
예제 #10
0
 public RepeatingNodeTemplate(IStructuralNodeTemplate template, int itemCount, Func <int, long, string> getName)
     : this(template, itemCount, getName, template.Width)
 {
 }