예제 #1
0
        public void InsertWidget(int insertRow, LayoutWidgetType widgetType)
        {
            AbstractWidget widgetModel = null;

            switch (widgetType)
            {
            case LayoutWidgetType.Label:
                widgetModel = new LabelWidget {
                    Id = Guid.NewGuid()
                };
                break;

            case LayoutWidgetType.Text:
                widgetModel = new TextWidget {
                    Id = Guid.NewGuid()
                };
                break;

            case LayoutWidgetType.Container:
                widgetModel = new ContainerWidget {
                    Id = Guid.NewGuid(), Items = new List <ContainerItem>()
                };
                break;

            default:
                throw new ArgumentException($"InsertWidget for widget {widgetType} not implemented");
            }

            if (insertRow == -1)
            {
                _model.Items.Add(new ContainerItem
                {
                    Row    = _model.Items.Count + 1,
                    Widget = widgetModel
                });
            }
            else
            {
                foreach (var item in _model.Items.Where(o => o.Row >= insertRow))
                {
                    item.Row = item.Row + 1;
                }
                _model.Items.Insert(insertRow, new ContainerItem
                {
                    Row    = insertRow,
                    Widget = widgetModel
                });
            }

            UpdateViewModels();
        }
예제 #2
0
 public WidgetBuilder(AbstractWidget widget)
 {
     this._abstractWidgetInProgress = widget;
 }