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(); }
public WidgetBuilder(AbstractWidget widget) { this._abstractWidgetInProgress = widget; }