Files
BeWoPlaner/BeWo/View/Document/SingleTemplateSelectionView.xaml.cs

246 lines
8.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using BeWo.Controls;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.View.Search;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BeWo.Core.Service;
using BS.Shared;
using BS.Shared.Extensions;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Services;
using BS.Shared.Translation;
using DevExpress.Xpf.RichEdit;
using SupportConceptService = BeWo.Core.Service.SupportConceptService;
using System.Linq;
using DevExpress.Xpf.Grid;
using System.Windows.Media.Imaging;
using DevExpress.Utils;
using DevExpress.Mvvm.Native;
using DevExpress.Xpf.Controls.ThemeKeys;
using DevExpress.Web;
namespace BeWo.View.Document
{
public partial class SingleTemplateSelectionView
{
public event Action ButtonCreateForSelectionClicked;
public event Action ButtonCancelClicked;
private VorlagentabelleDC vorlagenTabelle;
private List<DokumentvorlageDC> alleVorlagen;
private List<BeWoFolderDC> allTemplateFolder;
private List<BeWoFolderDC> allObjectFolder;
public SingleTemplateSelectionView()
{
InitializeComponent();
}
public BeWoFolderDC SelectedFolder { get; set; }
public DokumentvorlageDC SelectedTemplate { get; set; }
public DocumentTreeItemDC SelectedReportTemplate { get; set; }
public void InitView(VorlagentabelleDC vt, List<DokumentvorlageDC> alleVorlagen, List<BeWoFolderDC> allTemplateFolder, List<BeWoFolderDC> allObjectFolder, bool showTemplateTree, bool showDocumentTree, String defaultFileName, IList<ReportTemplateDC> defaultReports, BeWoFolderDC selectedDefaultFolder)
{
//tableId = tid;
this.vorlagenTabelle = vt;
this.alleVorlagen = alleVorlagen;
this.allTemplateFolder = allTemplateFolder;
this.allObjectFolder = allObjectFolder;
this.txtFileName.Text = defaultFileName;
if (showTemplateTree)
{
DokumentViewHelper.CreateDefaultReportsTreeViewItems(treelistcontrol_template, defaultReports, true);
DokumentViewHelper.CreateTemplateTreeViewItems(treelistcontrol_template, new List<VorlagentabelleDC>() { vt }, allTemplateFolder, true);
DokumentViewHelper.AddTemplatesToTreeView(treelistcontrol_template, alleVorlagen, true);
}
else
{
Button_SelectTemplate.Visibility = Visibility.Collapsed;
lblTemplate.Visibility = Visibility.Collapsed;
treelistcontrol_template.Visibility = Visibility.Collapsed;
GridRowTemplate.Height = GridLength.Auto;
}
if (showDocumentTree)
{
DokumentViewHelper.CreateTemplateTreeViewItems(treelistcontrol_folderStructureForSelection, null, allObjectFolder, true);
SelectFolder(selectedDefaultFolder, treelistcontrol_folderStructureForSelection.View.Nodes);
}
else
{
//chkSaveDoc.Visibility = Visibility.Collapsed;
lblFileName.Visibility = Visibility.Collapsed;
txtFileName.Visibility = Visibility.Collapsed;
Button_SelectFolder.Visibility = Visibility.Collapsed;
treelistcontrol_folderStructureForSelection.Visibility = Visibility.Collapsed;
GridRowFolder.Height = GridLength.Auto;
}
Focus();
}
//private void Button_CreateTemplateBasedDocument_Click(object sender, RoutedEventArgs e)
//{
// selectedFolder = null;
// var selected = GetSelectedElements();
// if (selected == null || selected.Count == 0)
// {
// MessageBox.Show("Es muss mindestens ein Datensatz ausgewählt werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
// return;
// }
// ButtonCreateClicked?.Invoke();
//}
public void SelectFolder(BeWoFolderDC folder, TreeListNodeCollection nodes)
{
if (folder != null)
{
foreach (var item in nodes)
{
var vm = item.Content as DocumentTreeItemVM;
var f = vm?.DataContract?.BeWoFolderDC;
if (f != null && f.Name == folder.Name && (f.BeWoFolderOid == folder.BeWoFolderOid))
{
var node = treelistcontrol_folderStructureForSelection.View.GetNodeByRowHandle(item.RowHandle);
treelistcontrol_folderStructureForSelection.SelectedItem = vm;
treelistcontrol_folderStructureForSelection.View.FocusedRowHandle = item.RowHandle;
//treelistcontrol_folderStructureForSelection.SelectItem(item);
//treelistcontrol_folderStructureForSelection.Focus();
}
else
{
SelectFolder(folder, item.Nodes);
}
}
}
}
private void Button_CreateTemplateForSelection_Click(object sender, RoutedEventArgs e)
{
e.Handled = true;
OpenSelectedTemplate();
}
private void OpenSelectedTemplate()
{
var selected = treelistcontrol_template.SelectedItem as DocumentTreeItemVM;
if (selected != null && selected.DataContract.Table == TableID.ReportTemplate)
{
SelectedReportTemplate = selected.DataContract;
ButtonCreateForSelectionClicked?.Invoke();
return;
}
if (selected == null || selected.DataContract.Dokumentvorlage == null)
{
MessageBox.Show("Bitte wählen Sie eine Vorlage aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
SelectedTemplate = selected.DataContract.Dokumentvorlage;
ButtonCreateForSelectionClicked?.Invoke();
}
private void Button_SelectFolder_Click(object sender, RoutedEventArgs e)
{
var selected = treelistcontrol_folderStructureForSelection.SelectedItem as DocumentTreeItemVM;
if (selected == null || selected.DataContract.BeWoFolderDC == null)
{
MessageBox.Show("Bitte wählen Sie einen Ordner aus.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Information);
return;
}
SelectedFolder = selected.DataContract.BeWoFolderDC;
//Kleiner Hack;-)
SelectedFolder.Name = txtFileName.Text;
ButtonCreateForSelectionClicked?.Invoke();
}
//private void Button_CreateTemplateBasedDocumentForAll_Click(object sender, RoutedEventArgs e)
//{
// var selected = datagrid_enabled_for_template.ItemsSource as List<PrintSelectionVM>;
// ButtonCreateForAllClicked?.Invoke();
//}
private void Button_Cancel_Click(object sender, RoutedEventArgs e)
{
ButtonCancelClicked?.Invoke();
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
treelistcontrol_folderStructureForSelection.Visibility = Visibility.Visible;
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
SelectedFolder = null;
treelistcontrol_folderStructureForSelection.Visibility = Visibility.Collapsed;
}
private BitmapImage LoadFolderImage()
{
return new BitmapImage(new Uri("/Ressources/Icons/Folder.png", UriKind.Relative));
}
private void TreeView_template_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var hitInfo = TreeView_template.CalcHitInfo(e.OriginalSource as DependencyObject);
if (hitInfo.InRowCell)
{
e.Handled = true;
OpenSelectedTemplate();
}
}
private void button_aufklappenAll_Click(object sender, RoutedEventArgs e)
{
ExpandAllTreeItems(TreeView_template.Nodes, true);
}
private void button_zuklappenAll_Click(object sender, RoutedEventArgs e)
{
ExpandAllTreeItems(TreeView_template.Nodes, false);
}
private void ExpandAllTreeItems(TreeListNodeCollection nodes, bool expanded)
{
foreach (var node in nodes)
{
node.IsExpanded = expanded;
ExpandAllTreeItems(node.Nodes, expanded);
}
//TreeView_template.items
}
}
}