| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using System;
- using System.Linq;
- using System.Linq.Expressions;
- using System.Threading;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Forms;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.Wpf;
- using InABox.WPF;
- namespace PRSDesktop;
- public class MeetingItemTree : DynamicDataGrid<MeetingItem>
- {
- protected override IDynamicGridUIComponent<MeetingItem> CreateUIComponent()
- {
- var component = new DynamicGridTreeUIComponent<MeetingItem, Guid>(
- x => x.ID,
- x => x.Parent.ID,
- Guid.Empty)
- {
- Parent = this,
- ShowHeader = false,
- MaxRowHeight = 30,
- ShowNumbers = true
- };
- component.OnContextMenuOpening += MeetingItemTree_OnContextMenuOpening;
- return component;
- }
- protected override DynamicGridColumns LoadColumns()
- {
- var columns = new DynamicGridColumns();
- columns.Add<MeetingItem>(x => x.Title, 0, "Title", "", Alignment.MiddleLeft);
- return columns;
- }
- public MeetingModel? Model { get; set; }
-
- private void MeetingItemTree_OnContextMenuOpening(CoreTreeNode<Guid>? node, ContextMenu menu)
- {
- if(node is not null && node.ID != CoreUtils.FullGuid && Options.AddRows)
- {
- menu.AddItem("Add Child Item", null, node, (n) =>
- {
- var item = CreateItem();
- item.Parent.ID = n.ID;
- if (EditItems(new[] { item }))
- {
- DoChanged();
- Refresh(false, true);
- }
- });
- }
- }
- protected override void Reload(
- Filters<MeetingItem> criteria, Columns<MeetingItem> columns, ref SortOrder<MeetingItem>? sort,
- CancellationToken token, Action<CoreTable?, Exception?> action)
- {
- if(Model != null)
- {
- criteria.Add(new Filter<MeetingItem>(x => x.Meeting.ID).IsEqualTo(Model.ID));
- }
- base.Reload(criteria, columns, ref sort, token, action);
- }
- protected override bool CanCreateItems()
- {
- if (Model is null)
- {
- MessageWindow.ShowMessage("Please select a meeting first!", "No meeting selected");
- return false;
- }
- else
- {
- return base.CanCreateItems();
- }
- }
- public override MeetingItem CreateItem()
- {
- var item = base.CreateItem();
- item.Meeting.ID = Model.ID;
- item.Title = "New Agenda Item";
- return item;
- }
- }
|