private async void Session_Save(object sender, RoutedEventArgs e) { SwagDataSet.Display = SessionName; SwagItemPreOrderIterator <SwagData> itrSwagData = SwagDataSet.CreateIterator(); SwagWindow.GlobalIsBusy = true; await Task.Run(() => { for (SwagData sd = itrSwagData.First(); !itrSwagData.IsDone; sd = itrSwagData.Next()) { if (sd is SwagDataTable sdt && !sdt.IsInitialized) { SwagDataGrid.InitSwagDataTable(sdt); } } }); SwagDataSet sdsSession = SwagWPFContainer.SwagDataService.SwagDataSets.Where(sds => sds.Display == SessionName).FirstOrDefault(); if (sdsSession == SwagDataSet) { SwagWPFContainer.SwagDataService.SwagDataSets.Update(SwagDataSet); } else { SwagWPFContainer.SwagDataService.SwagDataSets.Add(SwagDataSet); } SwagWindow.GlobalIsBusy = false; SwagWPFContainer.SwagDataService.Save(); }
private async void Session_Load(object sender, RoutedEventArgs e) { SwagDataSet sdsSession = null; SwagWindow.GlobalIsBusy = true; await Task.Run(() => { sdsSession = SwagWPFContainer.SwagDataService.SwagDataSets.Where(sds => sds.Display == SessionName).FirstOrDefault(); }); if (sdsSession != null) { SwagWPFContainer.SwagDataService.Init(sdsSession); SwagDataSet = sdsSession; SwagItemPreOrderIterator <SwagData> itrSwagData = SwagDataSet.CreateIterator(); for (SwagData sd = itrSwagData.First(); !itrSwagData.IsDone; sd = itrSwagData.Next()) { if (sd is SwagDataTable sdt) { if (!sdt.IsInitialized) { SwagDataGrid.InitSwagDataTable(sdt); } sdt.FilterCommand.Execute(null); } } } SwagWindow.GlobalIsBusy = false; }
private async void Search_OnSearch(object sender, RoutedEventArgs e) { SearchTextBox searchTextBox = (SearchTextBox)sender; SwagData swagData = (SwagData)((SwagTabItem)searchTextBox.DataContext).ViewModel; SwagItemPreOrderIterator <SwagData> itrSwagData = SwagDataSet.CreateIterator(); SwagWindow.GlobalIsBusy = true; await Task.Run(() => { for (SwagData sd = itrSwagData.First(); !itrSwagData.IsDone; sd = itrSwagData.Next()) { if (sd is SwagDataTable sdg && !sdg.IsInitialized) { SwagDataGrid.InitSwagDataTable(sdg); } } }); SwagWindow.GlobalIsBusy = false; SwagDataResult swagDataResult = SwagDataSet.Search(searchTextBox.Text, searchTextBox.FilterMode, (sdc, sdr, searchValue, filterMode) => { String compareTarget = sdr.DataRow[sdc.ColumnName].ToString(); String compareValue = searchValue; return(SearchHelper.Evaluate(compareTarget, compareValue, false, filterMode, false)); }); swagData.SwagDataResult = swagDataResult; }
private void SwagDataSetHeader_Export(object sender, RoutedEventArgs e) { FrameworkElement fe = (FrameworkElement)sender; SwagDataSet swagDataSet = (SwagDataSet)fe.DataContext; ParseStrategy parseStrategy = (ParseStrategy)fe.Tag; switch (parseStrategy) { case ParseStrategy.Sqlite: SaveFileDialog sfdSqlite = new SaveFileDialog(); sfdSqlite.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); sfdSqlite.FileName = Path.ChangeExtension(swagDataSet.Display, null); sfdSqlite.Filter = "SQLite files (*.db;*.sqlite)|*.db;*.sqlite"; System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { if (sfdSqlite.ShowDialog() ?? false) { DataSetSqliteFileConverter dsConverter = new DataSetSqliteFileConverter(); dsConverter.FromDataSet(null, swagDataSet.GetDataSet(), sfdSqlite.FileName); } })); break; case ParseStrategy.Csv: System.Windows.Forms.FolderBrowserDialog fbdCsv = new System.Windows.Forms.FolderBrowserDialog(); fbdCsv.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { if (fbdCsv.ShowDialog() == System.Windows.Forms.DialogResult.OK) { DataSetCsvFileConverter dsConverter = new DataSetCsvFileConverter(); SwagItemPreOrderIterator <SwagData> itrSwagData = swagDataSet.CreateIterator(); swagDataSet.Display = swagDataSet.Display ?? "DataSet"; for (SwagData sd = itrSwagData.First(); !itrSwagData.IsDone; sd = itrSwagData.Next()) { if (sd is SwagDataSet sds) { String destFolder = ""; //If exporting root and root has blank display, use DataSet if (swagDataSet == SwagDataSet && string.IsNullOrEmpty(swagDataSet.Display)) { destFolder = Path.Combine(fbdCsv.SelectedPath, "DataSet", sds.Path); } else { destFolder = Path.Combine(fbdCsv.SelectedPath, sds.Path); } //limit to depth of 1 when exporting DataSet dsConverter.FromDataSet(null, sds.GetDataSet(1), destFolder); } } } })); break; } }
public static void InitSwagDataSet(SwagDataSet swagDataSet) { #region FilterTabsCommand SwagItemPreOrderIterator <SwagData> itrSwagData = swagDataSet.CreateIterator(); for (SwagData swagData = itrSwagData.First(); !itrSwagData.IsDone; swagData = itrSwagData.Next()) { if (swagData is SwagDataSet sds) { sds.FilterTabsCommand = new RelayCommand(() => { String filter = sds.Settings["Tabs"]["Search"]["Text"].GetValue <String>(); FilterMode filterMode = sds.Settings["Tabs"]["Search"]["FilterMode"].GetValue <FilterMode>(); UIHelper.GetCollectionView(sds.Children).Filter = (item) => { SwagData swagData = (SwagData)item; Boolean itemMatch = SearchHelper.Evaluate(swagData.Display, filter, false, filterMode, false); Boolean childDataSetMatch = false; if (swagData is SwagDataSet subDataSet) { subDataSet.Settings["Tabs"]["Search"]["Text"].SetValue(filter); subDataSet.Settings["Tabs"]["Search"]["FilterMode"].SetValue(filterMode); subDataSet.FilterTabsCommand.Execute(null); ICollectionView subchildren = UIHelper.GetCollectionView(subDataSet.Children); childDataSetMatch = !subchildren.IsEmpty; } return(itemMatch || childDataSetMatch); }; }); } } #endregion FilterTabsCommand #region InitSettings swagDataSet.Settings.TryAddChildSetting("Tabs", new SwagSettingGroup() { Icon = PackIconMaterialKind.TableSearch }); swagDataSet.Settings["Tabs"].TryAddChildSetting("Search", new SwagSettingGroup() { Icon = PackIconMaterialKind.Magnify }); swagDataSet.Settings["Tabs"]["Search"].TryAddChildSetting("Text", new SwagSettingString() { Icon = PackIconBoxIconsKind.RegularText }); swagDataSet.Settings["Tabs"]["Search"].TryAddChildSetting("FilterMode", new SwagSetting <FilterMode>() { SettingType = SettingType.DropDown, Value = FilterMode.CONTAINS, Icon = PackIconUniconsKind.Filter, ItemsSource = (FilterMode[])Enum.GetValues(typeof(FilterMode)) }); swagDataSet.Settings.TryAddChildSetting("Search", new SwagSettingGroup() { Icon = PackIconMaterialKind.TextSearch }); swagDataSet.Settings["Search"].TryAddChildSetting("Text", new SwagSettingString { Icon = PackIconBoxIconsKind.RegularText }); swagDataSet.Settings["Search"].TryAddChildSetting("FilterMode", new SwagSetting <FilterMode>() { SettingType = SettingType.DropDown, Value = FilterMode.CONTAINS, Icon = PackIconUniconsKind.Filter, ItemsSource = (FilterMode[])Enum.GetValues(typeof(FilterMode)) }); #endregion InitSettings #region InitTabs SwagTabGroup tabs = new SwagTabGroup(); tabs["Tabs"] = new SwagTabItem() { Icon = PackIconMaterialKind.TableSearch }; tabs["Parse"] = new SwagTabGroup() { Icon = PackIconZondiconsKind.DocumentAdd }; tabs["Parse"]["Paste"] = new SwagTabGroup() { Icon = PackIconZondiconsKind.Paste }; tabs["Parse"]["Paste"]["TSV"] = new SwagTabItem() { Icon = PackIconMaterialKind.AlphaTBoxOutline }; tabs["Parse"]["Paste"]["JSON"] = new SwagTabItem() { Icon = PackIconMaterialKind.CodeJson }; tabs["Parse"]["Paste"]["XML"] = new SwagTabItem() { Icon = PackIconMaterialKind.Xml }; tabs["Search"] = new SwagTabItem() { Icon = PackIconMaterialKind.TextSearch }; tabs["Session"] = new SwagTabItem() { Icon = PackIconMaterialKind.WindowRestore }; tabs["Test"] = new SwagTabItem() { Icon = PackIconOcticonsKind.Beaker }; tabs["Settings"] = new SwagTabItem() { Icon = PackIconMaterialKind.Cog }; swagDataSet.Tabs = tabs; SwagItemPreOrderIterator <SwagTabItem> itrTabs = tabs.CreateIterator(); for (SwagTabItem tabItem = itrTabs.First(); !itrTabs.IsDone; tabItem = itrTabs.Next()) { tabItem.ViewModel = swagDataSet; } #endregion InitTabs }
public static void InitSwagDataTable(SwagDataTable swagDataTable) { if (swagDataTable.DataTable == null) //Build DataTable { DataTable dt = new DataTable(swagDataTable.Display); foreach (KeyValuePair <String, SwagDataColumn> kvpCol in swagDataTable.Columns) { kvpCol.Value.SwagDataTable = swagDataTable; dt.Columns.Add(kvpCol.Value.DataColumn()); } swagDataTable.DictRows.Clear(); foreach (SwagData swagData in swagDataTable.Children) { if (swagData is SwagDataRow swagDataRow) { DataRow dr = dt.NewRow(); foreach (KeyValuePair <String, JToken> kvpField in swagDataRow.Value) { dr[kvpField.Key] = ((JValue)kvpField.Value).Value; } swagDataTable.DictRows.Add(dr, swagDataRow); dt.Rows.Add(dr); swagDataRow.DataRow = dr; } } swagDataTable.DataTable = dt; swagDataTable.InitColumns(); } else //Build From DataTable { #region Clear Columns and Rows for instance swagDataTable.Columns.Clear(); swagDataTable.Children.Clear(); #endregion Clear Columns and Rows for instance #region Add Columns and Rows for instance swagDataTable.InitColumns(); foreach (DataColumn dc in swagDataTable.DataTable.Columns) { SwagDataColumn sdc = new SwagDataColumn() { ColumnName = dc.ColumnName, DataType = dc.DataType }; sdc.SwagDataTable = swagDataTable; sdc.DataTypeString = sdc.DataTypeString; swagDataTable.Children.Add(sdc); swagDataTable.Columns.Add(dc.ColumnName, sdc); } swagDataTable.DictRows.Clear(); foreach (DataRow dr in swagDataTable.DataTable.Rows) { SwagDataRow row = new SwagDataRow(dr); row.Value = row.Value; row.ValueTypeString = row.ValueTypeString; swagDataTable.Children.Add(row); swagDataTable.DictRows.Add(row.DataRow, row); } #endregion Add Columns and Rows for instance } #region InitViews CollectionViewSource columnsVisibilitySource, columnsFilterSource; columnsVisibilitySource = new CollectionViewSource() { Source = swagDataTable.Columns }; columnsFilterSource = new CollectionViewSource() { Source = swagDataTable.Columns }; columnsFilterSource.View.Filter = (itm) => { KeyValuePair <String, SwagDataColumn> kvp = (KeyValuePair <String, SwagDataColumn>)itm; return(kvp.Value.HasAppliedFilter); }; swagDataTable.ColumnsVisibilityView = columnsVisibilitySource.View; swagDataTable.ColumnsFilterView = columnsFilterSource.View; #endregion InitViews #region FilterCommand swagDataTable.FilterCommand = new RelayCommand(() => { ICollectionView view = CollectionViewSource.GetDefaultView(swagDataTable.DataTable.DefaultView); if (view is BindingListCollectionView) //Assuming you are DataView for now { BindingListCollectionView bindingView = (BindingListCollectionView)view; //https://stackoverflow.com/questions/9385489/why-errors-when-filters-datatable-with-collectionview bindingView.CancelEdit(); String combinedFilter = ""; foreach (KeyValuePair <string, SwagDataColumn> kvp in swagDataTable.Columns) { if (kvp.Value.HasAppliedFilter) { String filterTemp = kvp.Value.AppliedFilter; if (kvp.Value.AppliedFilter.Contains("'(Blanks)'")) { filterTemp = string.Format("({0} OR CONVERT([{1}], 'System.String') = '' OR [{1}] IS NULL)", kvp.Value.AppliedFilter, kvp.Key); } combinedFilter = string.Format("{0}{1} AND ", combinedFilter, filterTemp); } } if (combinedFilter.EndsWith("AND ")) { combinedFilter = combinedFilter.Substring(0, combinedFilter.Length - 4); } bindingView.CustomFilter = combinedFilter; } columnsFilterSource.View.Refresh(); }); #endregion FilterCommand #region ExportCommand swagDataTable.ExportCommand = new RelayCommand(() => { IDataTableConverter converter = null; string dialogFilter = ""; SwagTableExportType exportType = swagDataTable.Settings["Export"]["Type"].GetValue <SwagTableExportType>(); switch (exportType) { case SwagTableExportType.Csv: converter = new DataTableCsvStringConverter(); dialogFilter = "CSV files (*.csv)|*.csv"; break; case SwagTableExportType.TSql_Command: converter = new DataTableTSqlCommandConverter(); dialogFilter = "SQL files (*.sql)|*.sql"; break; case SwagTableExportType.Sqlite: SaveFileDialog sfd = new SaveFileDialog(); sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); sfd.FileName = Path.ChangeExtension(swagDataTable.DataTable.TableName, null); sfd.Filter = "SQLite files (*.db;*.sqlite)|*.db;*.sqlite"; System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { if (sfd.ShowDialog() ?? false) { DataSetSqliteFileConverter dsConverter = new DataSetSqliteFileConverter(); DataSet ds = new DataSet(); ds.Tables.Add(swagDataTable.DataTable.Copy()); dsConverter.FromDataSet(null, ds, sfd.FileName); } })); return; case SwagTableExportType.Sqlite_Command: converter = new DataTableSqliteCommandConverter(); dialogFilter = "SQLite command files (*.cmd)|*.cmd"; break; } Object output = converter.FromDataTableToObject(new DataTableConvertParams(), swagDataTable.DataTable.DefaultView.ToTable()); switch (swagDataTable.Settings["Export"]["Destination"].GetValue <SwagTableDestinationType>()) { case SwagTableDestinationType.Clipboard: Clipboard.SetText(output.ToString()); break; case SwagTableDestinationType.File: SaveFileDialog sfd = new SaveFileDialog(); sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); sfd.FileName = swagDataTable.DataTable.TableName; sfd.Filter = dialogFilter; System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { if (sfd.ShowDialog() ?? false) { File.WriteAllText(sfd.FileName, output.ToString()); } })); break; case SwagTableDestinationType.New_Window: Window window = new Window(); TextBox textBox = new TextBox(); textBox.AcceptsReturn = textBox.AcceptsTab = true; textBox.Text = output.ToString(); window.Content = textBox; window.Show(); break; } }); #endregion ExportCommand #region ImportCommand swagDataTable.ImportCommand = new RelayCommand(() => { IDataTableConverter converter = null; DataTableConvertParams cp = new DataTableConvertParams(); string dialogFilter = ""; String inputText = ""; switch (swagDataTable.Settings["Import"]["Type"].GetValue <SwagTableImportType>()) { case SwagTableImportType.Csv: converter = new DataTableCsvStringConverter(); dialogFilter = "CSV files (*.csv)|*.csv"; break; case SwagTableImportType.Tsv: converter = new DataTableCsvStringConverter(); cp.FieldDelim = '\t'; dialogFilter = "TSV files (*.tsv)|*.tsv"; break; } switch (swagDataTable.Settings["Import"]["Source"].GetValue <SwagTableSourceType>()) { case SwagTableSourceType.File: OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); ofd.Filter = dialogFilter; System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { if (ofd.ShowDialog() ?? false) { inputText = File.ReadAllText(ofd.FileName); } else { return; } })); break; case SwagTableSourceType.Clipboard: inputText = Clipboard.GetText(); break; } DataTable dtInput = converter.ToDataTable(cp, inputText); swagDataTable.DataTable = dtInput; }); #endregion ImportCommand #region ApplyColumnVisibilityFilterCommand swagDataTable.ApplyColumnVisibilityFilterCommand = new RelayCommand(() => { columnsVisibilitySource.View.Filter = (itm) => { KeyValuePair <String, SwagDataColumn> kvp = (KeyValuePair <String, SwagDataColumn>)itm; return(SearchHelper.Evaluate( kvp.Key, swagDataTable.Settings["ColumnEditor"]["Visibility"]["Search"]["Text"].GetValue <string>(), false, swagDataTable.Settings["ColumnEditor"]["Visibility"]["Search"]["FilterMode"].GetValue <FilterMode>(), false)); }; }); #endregion ApplyColumnVisibilityFilterCommand #region ApplyColumnFiltersFilterCommand swagDataTable.ApplyColumnFiltersFilterCommand = new RelayCommand(() => { columnsFilterSource.View.Filter = (itm) => { KeyValuePair <String, SwagDataColumn> kvp = (KeyValuePair <String, SwagDataColumn>)itm; return(kvp.Value.HasAppliedFilter && (SearchHelper.Evaluate( kvp.Key, swagDataTable.Settings["ColumnEditor"]["Filters"]["Search"]["Text"].GetValue <string>(), false, swagDataTable.Settings["ColumnEditor"]["Filters"]["Search"]["FilterMode"].GetValue <FilterMode>(), false) || SearchHelper.Evaluate( kvp.Value.AppliedFilter, swagDataTable.Settings["ColumnEditor"]["Filters"]["Search"]["Text"].GetValue <string>(), false, swagDataTable.Settings["ColumnEditor"]["Filters"]["Search"]["FilterMode"].GetValue <FilterMode>(), false))); }; }); #endregion ApplyColumnFiltersFilterCommand #region ResetColumnsCommand swagDataTable.ResetColumnsCommand = new RelayCommand(() => { swagDataTable.DelaySave = true; columnsVisibilitySource.Source = columnsFilterSource.Source = swagDataTable.Columns; columnsVisibilitySource.View.Refresh(); columnsFilterSource.View.Refresh(); swagDataTable.OnPropertyChangedPublic("ColumnsView"); swagDataTable.OnPropertyChangedPublic("ColumnCount"); swagDataTable.DelaySave = false; var tempCols = swagDataTable.Columns; swagDataTable.Columns = null; swagDataTable.Columns = tempCols; }); #endregion ResetColumnsCommand #region InitSettings swagDataTable.Settings.TryAddChildSetting("ColumnEditor", new SwagSettingGroup() { Icon = PackIconMaterialKind.TableColumn, Icon2 = PackIconFontAwesomeKind.EditSolid }); swagDataTable.Settings["ColumnEditor"].TryAddChildSetting("Visibility", new SwagSettingGroup() { Icon = PackIconMaterialKind.TableColumn, Icon2 = PackIconMaterialKind.Eye }); swagDataTable.Settings["ColumnEditor"]["Visibility"].TryAddChildSetting("Search", new SwagSettingGroup() { Icon = PackIconMaterialKind.Magnify }); swagDataTable.Settings["ColumnEditor"]["Visibility"]["Search"].TryAddChildSetting("Text", new SwagSetting <String>() { Icon = PackIconBoxIconsKind.RegularText }); swagDataTable.Settings["ColumnEditor"]["Visibility"]["Search"].TryAddChildSetting("FilterMode", new SwagSetting <FilterMode>() { SettingType = SettingType.DropDown, Value = FilterMode.CONTAINS, Icon = PackIconUniconsKind.Filter, ItemsSource = (FilterMode[])Enum.GetValues(typeof(FilterMode)) }); swagDataTable.Settings["ColumnEditor"].TryAddChildSetting("Filters", new SwagSettingGroup() { Icon = PackIconMaterialKind.TableColumn, Icon2 = PackIconMaterialKind.Filter }); swagDataTable.Settings["ColumnEditor"]["Filters"].TryAddChildSetting("Search", new SwagSettingGroup() { Icon = PackIconMaterialKind.Magnify }); swagDataTable.Settings["ColumnEditor"]["Filters"]["Search"].TryAddChildSetting("Text", new SwagSetting <String>() { Icon = PackIconBoxIconsKind.RegularText }); swagDataTable.Settings["ColumnEditor"]["Filters"]["Search"].TryAddChildSetting("FilterMode", new SwagSetting <FilterMode>() { SettingType = SettingType.DropDown, Value = FilterMode.CONTAINS, Icon = PackIconUniconsKind.Filter, ItemsSource = (FilterMode[])Enum.GetValues(typeof(FilterMode)) }); swagDataTable.Settings.TryAddChildSetting("Search", new SwagSettingGroup() { Icon = PackIconMaterialKind.Table, Icon2 = PackIconMaterialKind.Magnify }); swagDataTable.Settings["Search"].TryAddChildSetting("Text", new SwagSetting <String>() { Icon = PackIconBoxIconsKind.RegularText }); swagDataTable.Settings["Search"].TryAddChildSetting("FilterMode", new SwagSetting <FilterMode>() { SettingType = SettingType.DropDown, Value = FilterMode.CONTAINS, Icon = PackIconUniconsKind.Filter, ItemsSource = (FilterMode[])Enum.GetValues(typeof(FilterMode)) }); swagDataTable.Settings.TryAddChildSetting("Export", new SwagSettingGroup() { Icon = PackIconMaterialKind.Export }); swagDataTable.Settings["Export"].TryAddChildSetting("Type", new SwagSetting <SwagTableExportType>() { SettingType = SettingType.DropDown, Value = SwagTableExportType.Csv, Icon = PackIconMaterialKind.Export, Icon2 = PackIconFontAwesomeKind.ShapesSolid, ItemsSource = (SwagTableExportType[])Enum.GetValues(typeof(SwagTableExportType)) }); swagDataTable.Settings["Export"].TryAddChildSetting("Destination", new SwagSetting <SwagTableDestinationType>() { SettingType = SettingType.DropDown, Value = SwagTableDestinationType.Clipboard, Icon = PackIconMaterialKind.Target, ItemsSource = (SwagTableDestinationType[])Enum.GetValues(typeof(SwagTableDestinationType)) }); swagDataTable.Settings.TryAddChildSetting("Import", new SwagSettingGroup() { Icon = PackIconMaterialKind.Import }); swagDataTable.Settings["Import"].TryAddChildSetting("Type", new SwagSetting <SwagTableImportType>() { SettingType = SettingType.DropDown, Value = SwagTableImportType.Tsv, Icon = PackIconMaterialKind.Import, Icon2 = PackIconFontAwesomeKind.ShapesSolid, ItemsSource = (SwagTableImportType[])Enum.GetValues(typeof(SwagTableImportType)) }); swagDataTable.Settings["Import"].TryAddChildSetting("Source", new SwagSetting <SwagTableSourceType>() { SettingType = SettingType.DropDown, Value = SwagTableSourceType.Clipboard, Icon = PackIconMaterialKind.SourceCommitStart, ItemsSource = (SwagTableSourceType[])Enum.GetValues(typeof(SwagTableSourceType)) }); #endregion InitSettings #region InitTabs SwagTabGroup tabs = new SwagTabGroup(); tabs["ColumnEditor"] = new SwagTabGroup() { Icon = PackIconMaterialKind.TableColumn, Icon2 = PackIconFontAwesomeKind.EditSolid, Display = "Column Editor" }; tabs["Search"] = new SwagTabItem() { Icon = PackIconMaterialKind.TextSearch }; tabs["Export"] = new SwagTabItem() { Icon = PackIconMaterialKind.Table, Icon2 = PackIconMaterialKind.ArrowRightThick }; tabs["Import"] = new SwagTabItem() { Icon = PackIconMaterialKind.Table, Icon2 = PackIconMaterialKind.ArrowLeftThick }; tabs["Settings"] = new SwagTabItem() { Icon = PackIconMaterialKind.Cog }; tabs["ColumnEditor"]["Visibility"] = new SwagTabItem() { Icon = PackIconMaterialKind.TableColumn, Icon2 = PackIconMaterialKind.Eye }; tabs["ColumnEditor"]["Filters"] = new SwagTabItem() { Icon = PackIconMaterialKind.TableColumn, Icon2 = PackIconMaterialKind.Filter }; //tabs["ColumnEditor"]["Add"] = new SwagTabItem() { Icon = PackIconMaterialKind.TableColumn, Icon2 = PackIconMaterialKind.Plus }; //tabs["ColumnEditor"]["View"] = new SwagTabItem() { Icon = PackIconMaterialKind.TableColumn, Icon2 = PackIconMaterialKind.Magnify }; swagDataTable.Tabs = tabs; SwagItemPreOrderIterator <SwagTabItem> iterator = tabs.CreateIterator(); for (SwagTabItem tabItem = iterator.First(); !iterator.IsDone; tabItem = iterator.Next()) { tabItem.ViewModel = swagDataTable; } //swagDataTable.Tabs.SwagItemChanged += _tabs_SwagItemChanged; //swagDataTable.Tabs.PropertyChangedExtended += _tabs_PropertyChangedExtended; #endregion InitTabs swagDataTable.PropertyChanged += SwagDataTable_PropertyChanged; swagDataTable.InitDataTable(); swagDataTable.IsInitialized = true; }
public SwagWindowSettingGroup GetWindowSettingGroupByName(String groupName) { SwagLogger.LogStart(this, "{Service} {Action}", "WindowSettingService", "GetWindowSettingGroupByName"); SwagWindowSettingGroup windowSettings = _swagWindowSettingsGroupRepository.Get(sg => sg.Name == groupName, null).FirstOrDefault(); if (windowSettings != null) { #region Load SwagSettingUnitOfWork _swagSettingGroupRepository.RecursiveLoadCollection(windowSettings, "Children"); #region OLD 2 Changing type to derived WPF type (not needed because of usage of CollectionToViewConverter) //#region Get Groups //Stack<SwagOverFlow.ViewModels.SwagSettingGroup> groups = new Stack<SwagOverFlow.ViewModels.SwagSettingGroup>(); //SwagItemPreOrderIterator<SwagSetting> iterator = storedSettings.CreateIterator(); //for (SwagSetting setting = iterator.First(); !iterator.IsDone; setting = iterator.Next()) //{ // switch (setting) // { // case SwagOverFlow.ViewModels.SwagSettingGroup group: // if (setting != storedSettings) // { // groups.Push(group); // } // break; // } //} //#endregion Get Groups //#region Resolve Groups ////Attaching and detaching needs to be in reverse order //while (groups.Count > 0) //{ // SwagOverFlow.ViewModels.SwagSettingGroup group = groups.Pop(); // SwagSettingGroup newGroup = new SwagSettingGroup(group); // if (group.Parent != null) // { // group.Parent = null; // } // work.SettingGroups.Detach(group); // work.SettingGroups.Attach(newGroup); //} //#endregion Resolve Groups //windowSettings = new SwagWindowSettingGroup(storedSettings); //work.SettingGroups.Detach(storedSettings); //work.SettingGroups.Attach(windowSettings); //work.SettingGroups.RecursiveLoadChildren(windowSettings); #endregion OLD 2 Changing type to derived WPF type (not needed because of usage of CollectionToViewConverter) #region OLD - Dynamically creates generic type (handled in Properties of SwagItemViewModel/SwagSettingView instead) //SwagItemPreOrderIterator<SwagItemViewModel> iterator = windowSettings.CreateIterator(); //for (SwagItemViewModel swagItem = iterator.First(); !iterator.IsDone; swagItem = iterator.Next()) //{ // SwagSettingViewModel swagSetting = (SwagSettingViewModel)swagItem; // if (swagSetting.IconString != null) // { // Type iconType = JsonConvert.DeserializeObject<Type>(swagSetting.IconTypeString); // swagSetting.Icon = (Enum)Enum.Parse(iconType, swagSetting.IconString); // } // if (swagSetting.ItemsSource != null) // { // Type itemsSourceType = JsonConvert.DeserializeObject<Type>(swagSetting.ItemsSourceTypeString); // swagSetting.ItemsSource = JsonConvert.DeserializeObject(swagSetting.ItemsSource.ToString(), itemsSourceType); // } // if (!String.IsNullOrEmpty(swagSetting.ValueTypeString)) // { // Type typeGenericTemplate = typeof(SwagSettingViewModel<>); // Type valueType = JsonConvert.DeserializeObject<Type>(swagSetting.ValueTypeString); // Type[] typeArgs = { valueType }; // Type typeGeneric = typeGenericTemplate.MakeGenericType(typeArgs); // windowSettings.Descendants.Remove(swagSetting); // work.Settings.Delete(swagSetting); // SwagSettingViewModel newSetting = (SwagSettingViewModel)Activator.CreateInstance(typeGeneric, swagSetting); // newSetting.Children = swagSetting.Children; // if (newSetting.ItemsSource != null) // { // Type itemsSourceType = JsonConvert.DeserializeObject<Type>(newSetting.ItemsSourceTypeString); // newSetting.ItemsSource = JsonConvert.DeserializeObject(newSetting.ItemsSource.ToString(), itemsSourceType); // } // swagSetting.Parent.Children.Remove(swagSetting); // swagSetting.Parent.Children.Add(newSetting); // if (valueType == typeof(Boolean)) // { // newSetting.Value = Boolean.Parse(swagSetting.Value.ToString()); // } // else if (valueType == typeof(String) && swagSetting.Value != null) // { // newSetting.Value = swagSetting.Value.ToString(); // } // else if (swagSetting.Value != null) // { // newSetting.Value = JsonConvert.DeserializeObject(swagSetting.Value.ToString(), valueType); // } // work.Settings.Insert(newSetting); // } //} #endregion OLD #endregion Load SwagSettingUnitOfWork SwagLogger.Log("{Service} {Action}", "WindowSettingService", "Loaded from database"); } if (windowSettings == null) { #region Create SwagWindowSettingGroup windowSettings = new SwagWindowSettingGroup(true); windowSettings.Name = windowSettings.AlternateId = groupName; _swagWindowSettingsGroupRepository.Insert(windowSettings); SwagItemPreOrderIterator <SwagSetting> iterator = windowSettings.CreateIterator(); for (SwagSetting setting = iterator.First(); !iterator.IsDone; setting = iterator.Next()) { //Mark these properites as modified to have them save properly setting.ObjValue = setting.ObjValue; setting.ValueTypeString = setting.ValueTypeString; setting.Data = setting.Data; } _context.SaveChanges(); SwagLogger.Log("{Service} {Action}", "WindowSettingService", "Created then saved to database"); #endregion Create SwagWindowSettingGroup } SwagLogger.LogEnd(this, "{Service} {Action}", "WindowSettingService", "GetWindowSettingGroupByName"); return(windowSettings); }