diff --git a/BeWo/View/Detail/AI/AiPromptbausteinComplexSelectionView.xaml b/BeWo/View/Detail/AI/AiPromptbausteinComplexSelectionView.xaml
index 2f4f76926..18f2bb075 100644
--- a/BeWo/View/Detail/AI/AiPromptbausteinComplexSelectionView.xaml
+++ b/BeWo/View/Detail/AI/AiPromptbausteinComplexSelectionView.xaml
@@ -3,6 +3,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ai="clr-namespace:BeWo.ViewModel.View.AI"
+ xmlns:local1="clr-namespace:BeWo.View.Detail.AI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:local="clr-namespace:BeWo.View.Detail.AI"
@@ -46,16 +47,48 @@
x:Name="treeView"
MinHeight="100"
Padding="4,16,4,16"
+ AllowDrop="True"
+ ContextMenuOpening="treeView_ContextMenuOpening"
ItemContainerStyle="{DynamicResource igoal_treeitemstyle}"
ItemTemplate="{StaticResource ai_promptbaustein_folder_itemtemplate}"
ItemsSource="{Binding Folders.VMList, UpdateSourceTrigger=PropertyChanged}"
- SelectedItemChanged="treeView_SelectedItemChanged">
+ PreviewMouseDown="Grid_PreviewMouseDown"
+ PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown"
+ SelectedItemChanged="treeView_SelectedItemChanged"
+ TreeViewItem.Selected="treeView_Selected">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CopiedFolder is object;
+ public bool HasCopiedPrompt => CopiedPrompt is object;
+ public CompactEmployeeDC CurrentEmployee => BeWoApp.CompactLoggedOnEmployee;
+
public AiPromptbausteinSelectionComplexViewModel()
{
SendCommand = new DelegateCommand(Send, CanSend, true);
@@ -34,6 +63,8 @@ namespace BeWo.ViewModel.View.AI
public AiPromptbausteinSelectionComplexViewModel(AiActionType aiActionType) : this()
{
AiActionType = aiActionType;
+ WindowService = BeWoApp.MainControl.WindowService;
+ InitCommands();
}
public AiPromptbausteinSelectionComplexViewModel(AiActionType aiActionType, AiPromptbausteinFolderListVM viewModel, bool isFavorite = false) : this(aiActionType)
{
@@ -42,6 +73,20 @@ namespace BeWo.ViewModel.View.AI
IsFavorite = isFavorite;
}
+ private void InitCommands()
+ {
+ OpenAddFolderDialogCommand = new DelegateCommand(OpenAddFolderDialog, canOpenAddFolderDialog, false);
+ OpenEditFolderDialogCommand = new DelegateCommand(OpenEditFolderDialog, canOpenEditFolderDialog, false);
+ DeleteFolderCommand = new DelegateCommand(DeleteFolder, canDeleteFolder, false);
+
+ OpenAddPromptDialogCommand = new DelegateCommand(OpenAddPromptDialog, canOpenAddPromptDialog, false);
+ OpenEditPromptDialogCommand = new DelegateCommand(OpenEditPromptDialog, canOpenEditPromptDialog, false);
+ DeletePromptCommand = new DelegateCommand(OpenDeletePromptDialog, canOpenDeletePromptDialog, false);
+ ChangeFavoritenStatePromptCommand = new DelegateCommand(ChangeFavoritenStatePrompt, canChangeFavoritenStatePrompt, false);
+
+ CanEditPromptbausteine = BeWoApp.HasLoggedOnUserRight(UserRightType.AiModulePromptbausteineEdit);
+ }
+
public bool IsFavorite { get; set; }
public DelegateCommand SendCommand { get; set; }
@@ -120,7 +165,172 @@ namespace BeWo.ViewModel.View.AI
private void UpdateVMList(AiPromptbausteinFolderListVM new_list)
{
Folders = new_list;
+ if (Folders.VMList.Count > 0 && Folders.VMList[0].DataContract.Oid == -5)
+ Favoriten = Folders.VMList[0];
FirePropertyChanged(nameof(Folders));
}
+
+ public void UpdateFolderCommands()
+ {
+ OpenAddFolderDialogCommand?.RaiseCanExecuteChanged();
+ OpenEditFolderDialogCommand?.RaiseCanExecuteChanged();
+ CopyFolderCommand?.RaiseCanExecuteChanged();
+ PasteFolderCommand?.RaiseCanExecuteChanged();
+ DeleteFolderCommand?.RaiseCanExecuteChanged();
+ }
+ public void UpdatePromptCommands()
+ {
+ OpenAddPromptDialogCommand?.RaiseCanExecuteChanged();
+ OpenEditPromptDialogCommand?.RaiseCanExecuteChanged();
+ CopyPromptCommand?.RaiseCanExecuteChanged();
+ PastePromptCommand?.RaiseCanExecuteChanged();
+ DeletePromptCommand?.RaiseCanExecuteChanged();
+ ChangeFavoritenStatePromptCommand?.RaiseCanExecuteChanged();
+ }
+
+ // --- Folder Commands ---
+
+ void OpenAddFolderDialog()
+ {
+ var sel_folder = SelectedFolder;
+ var new_vm = sel_folder.SubFolders.CreateNewVM();
+
+ new_vm.Creator = CurrentEmployee;
+ new_vm.Parent = sel_folder;
+ new_vm.ParentFolderOid = sel_folder?.DataContract?.Oid;
+ new_vm.CanAddFolder = true;
+ new_vm.CanAddPrompt = true;
+ new_vm.CanEdit = true;
+ new_vm.ActionType = AiActionType;
+
+ var vm = new AiPromptbausteinFolderViewModel(new_vm, true);
+
+ vm.Accept_Button_Clicked += (s, e) =>
+ {
+ var new_dc = new_vm.CommitToDataContract();
+
+ ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.InsertAiPromptbausteinFolder(new List { new_dc }),
+ (new_dcs) => ReloadVMList());
+ };
+
+ WindowService.Show(vm);
+ }
+ void OpenEditFolderDialog()
+ {
+ var sel_folder = SelectedFolder;
+ var sel_dc = sel_folder.CopyToEmptyDataContract();
+ sel_dc.CanEdit = SelectedFolder.CanEdit;
+ var edit_vm = new AiPromptbausteinFolderVM(sel_dc);
+
+ var vm = new AiPromptbausteinFolderViewModel(edit_vm, false);
+
+ vm.Accept_Button_Clicked += (s, e) =>
+ {
+ var edit_dc = edit_vm.CommitToDataContract();
+
+ ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.UpdateAiPromptbausteinFolder(new List { edit_dc }),
+ (update_dc) => ReloadVMList());
+ };
+
+ WindowService.Show(vm);
+ }
+ void DeleteFolder()
+ {
+ var sel_folder = SelectedFolder;
+ var parent = sel_folder.Parent;
+
+ var result = MessageBox.Show("Möchten Sie den ausgewählten Ordner wirklich löschen?", "Hinweis", MessageBoxButton.OKCancel);
+ if (result != MessageBoxResult.OK)
+ return;
+
+ var oid2version = new Dictionary()
+ {
+ {sel_folder.DataContract.Oid.Value, sel_folder.DataContract.Version.Value}
+ };
+
+ ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.DeleteAiPromptbausteinFolder(oid2version),
+ () => ReloadVMList());
+ }
+
+ bool canOpenAddFolderDialog() => CanEditPromptbausteine && (SelectedFolder?.CanAddFolder ?? true);
+ bool canOpenEditFolderDialog() => CanEditPromptbausteine && (SelectedFolder?.CanEdit ?? false);
+ bool canDeleteFolder() => CanEditPromptbausteine && (SelectedFolder?.CanEdit ?? false);
+
+ // --- Prompt Commands ---
+
+ void OpenAddPromptDialog()
+ {
+ var sel_folder = SelectedFolder;
+ var new_vm = sel_folder.SubPrompts.CreateNewVM();
+
+ new_vm.Creator = CurrentEmployee;
+ new_vm.ParentFolderOid = sel_folder.DataContract.Oid;
+ new_vm.ShowPrompt = true;
+ new_vm.ShowPromptByTenant = true;
+ new_vm.CanEdit = true;
+ new_vm.ActionType = AiActionType;
+
+ var vm = new AiPromptbausteinPromptViewModel(new_vm, true);
+
+ vm.Accept_Button_Clicked += (s, e) =>
+ {
+ var new_dc = new_vm.CommitToDataContract();
+
+ ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.InsertAiPromptbausteinPrompt(new List { new_dc }),
+ (new_dcs) => ReloadVMList());
+ };
+
+ WindowService.Show(vm);
+ }
+ void OpenEditPromptDialog()
+ {
+ var sel_prompt = SelectedPrompt;
+ var sel_dc = sel_prompt.CopyToEmptyDataContract();
+ sel_dc.CanEdit = SelectedPrompt.CanEdit;
+ var edit_vm = new AiPromptbausteinPromptVM(sel_dc);
+
+ var vm = new AiPromptbausteinPromptViewModel(edit_vm, false);
+
+ vm.Accept_Button_Clicked += (s, e) =>
+ {
+ var edit_dc = edit_vm.CommitToDataContract();
+
+ ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.UpdateAiPromptbausteinPrompt(new List { edit_dc }),
+ (update_dc) => ReloadVMList());
+ };
+
+ WindowService.Show(vm);
+ }
+ void OpenDeletePromptDialog()
+ {
+ var sel_prompt = SelectedPrompt;
+ var folder = SelectedFolder;
+
+ var result = MessageBox.Show("Möchten Sie den ausgewählten Prompt wirklich löschen?", "Hinweis", MessageBoxButton.OKCancel);
+ if (result != MessageBoxResult.OK)
+ return;
+
+ var oid2version = new Dictionary()
+ {
+ {sel_prompt.DataContract.Oid.Value, sel_prompt.DataContract.Version.Value}
+ };
+
+ ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.DeleteAiPromptbausteinPrompt(oid2version),
+ () => ReloadVMList());
+ }
+ void ChangeFavoritenStatePrompt()
+ {
+ var sel_prompt = SelectedPrompt;
+ sel_prompt.IsFavorite = !sel_prompt.IsFavorite;
+ var edit_dc = sel_prompt.CommitToDataContract();
+
+ ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.UpdateAiPromptbausteinPrompt(new List { edit_dc }),
+ (update_dc) => ReloadVMList());
+ }
+
+ bool canOpenAddPromptDialog() => CanEditPromptbausteine && (SelectedFolder?.CanAddPrompt ?? false);
+ bool canOpenEditPromptDialog() => SelectedPrompt is object;
+ bool canOpenDeletePromptDialog() => CanEditPromptbausteine && (SelectedPrompt?.CanEdit ?? false);
+ bool canChangeFavoritenStatePrompt() => SelectedPrompt is object;
}
}