| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using System.Linq;
- using System.Linq.Expressions;
- 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>(
- x => x.ID,
- x => x.Parent.ID)
- {
- 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, string>(x => x.Title, 0, "Title", "", Alignment.MiddleLeft);
- return columns;
- }
- public MeetingModel? Model { get; set; }
-
- private void MeetingItemTree_OnContextMenuOpening(CoreTreeNode? node, ContextMenu menu)
- {
- if(node is not null && node.ID != CoreUtils.FullGuid && Options.Contains(DynamicGridOption.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, 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, 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;
- }
- }
|