private void _addRange() { var tab = _tab.To <int>(); var range = FormatConverters.IntOrHexConverter(_tbRange.Text); var from = FormatConverters.IntOrHexConverter(_tbFrom.Text); var table = tab.GetDb <int>((ServerDbs)_destTable.SelectedItem).Table; try { table.Commands.Begin(); for (int i = 0; i < range; i++) { var tuple = new ReadableTuple <int>(i + from, tab.DbComponent.AttributeList); if (_based != null) { tuple.Copy(_based); tuple.SetRawValue(0, i + from); } tuple.Added = true; table.Commands.AddTuple(i + from, tuple); } } catch (Exception err) { table.Commands.CancelEdit(); ErrorHandler.HandleException(err); } finally { table.Commands.End(); tab.Filter(); } }
public void Add(TabControl mainTabControl, DbHolder holder, TabNavigation tabEngine, SdeEditor editor) { holder.AddTable(_adb); GDbTab copy = holder.GetTab(_adb, mainTabControl); if (_adb is AbstractDb <int> ) { _adb.To <int>().Table.Commands.CommandIndexChanged += (e, a) => editor.UpdateTabHeader(_adb.To <int>()); } else if (_adb is AbstractDb <string> ) { _adb.To <string>().Table.Commands.CommandIndexChanged += (e, a) => editor.UpdateTabHeader(_adb.To <string>()); } copy._listView.SelectionChanged += delegate(object sender, SelectionChangedEventArgs args) { if (sender is ListView) { ListView view = (ListView)sender; tabEngine.StoreAndExecute(new SelectionChanged(copy.Header.ToString(), view.SelectedItem, view, copy)); } }; ((DisplayLabel)copy.Header).ContextMenu.Items.Cast <MenuItem>().ToList().ForEach(p => p.IsEnabled = true); MenuItem mitem = new MenuItem(); mitem.Icon = new Image { Source = ApplicationManager.GetResourceImage("delete.png") }; mitem.Header = "Delete table"; mitem.Click += delegate { holder.RemoveTable(_adb); mainTabControl.Items.Remove(copy); List <string> tabs = ProjectConfiguration.CustomTabs; tabs.Remove(_file); ProjectConfiguration.CustomTabs = tabs.Distinct().ToList(); }; ((DisplayLabel)copy.Header).ContextMenu.Items.Add(mitem); mainTabControl.Items.Insert(mainTabControl.Items.Count, copy); _adb.LoadDb(); if (_adb is AbstractDb <int> ) { copy.To <int>().SearchEngine.Filter(this); } else if (_adb is AbstractDb <string> ) { copy.To <string>().SearchEngine.Filter(this); } editor.GdTabs.Add(copy); }
private void _selectInternal <TKey>(ServerDbs tabName, List <TKey> tuplesGen, bool changeTab) { try { lock (_lock) { IsSelecting = true; if (tabName.AdditionalTable == null) { TabItem item = _tab.Dispatch(() => _tab.Items.Cast <TabItem>().FirstOrDefault(p => p.Header.ToString() == tabName)); if (item is GDbTab) { GDbTab tab = (GDbTab)item; var table = tab.To <TKey>().Table; List <Tuple> tuples = tuplesGen.Select(table.TryGetTuple).Where(p => p != null).Select(p => (Tuple)p).ToList(); if (tuples.Count == 0) { if (changeTab) { ErrorHandler.HandleException((tuplesGen.Count > 1 ? "Items do" : "Item does") + " not exist in [" + tabName.DisplayName + "].", ErrorLevel.NotSpecified); } return; } if (!_containsAny(tab, tuples)) { tab.IgnoreFilterOnce(); tab.Filter(); _waitForFilter(tab); if (!_containsAny(tab, tuples)) { if (changeTab) { ErrorHandler.HandleException((tuplesGen.Count > 1 ? "Items" : "Item") + " not found in [" + tabName.DisplayName + "]. Try clearing the search filter on the specified table.", ErrorLevel.NotSpecified); } return; } } tab.Dispatch(p => p.IsSelected = true); _waitForFilter(tab); tab.Dispatch(p => p.SelectItems(tuples)); } else { if (item == null) { return; } if (changeTab) { item.Dispatch(p => p.IsSelected = true); } } } else { TabItem item = _tab.Dispatch(() => _tab.Items.Cast <TabItem>().FirstOrDefault(p => p.Header.ToString() == tabName)); TabItem item2 = _tab.Dispatch(() => _tab.Items.Cast <TabItem>().FirstOrDefault(p => p.Header.ToString() == tabName.AdditionalTable)); if (item is GDbTab && item2 is GDbTab) { GDbTab tab = (GDbTab)item; GDbTab tab2 = (GDbTab)item2; var table = tab.To <TKey>().Table; var table2 = tab2.To <TKey>().Table; List <Tuple> tuples = tuplesGen.Select(table.TryGetTuple).Where(p => p != null).Select(p => (Tuple)p).ToList(); List <Tuple> tuples2 = tuplesGen.Select(table2.TryGetTuple).Where(p => p != null).Select(p => (Tuple)p).ToList(); if (tuples.Count == 0 && tuples2.Count == 0) { if (changeTab) { ErrorHandler.HandleException((tuplesGen.Count > 1 ? "Items do" : "Item does") + " not exist in either [" + tabName.DisplayName + "] or [" + tabName.AdditionalTable.DisplayName + "].", ErrorLevel.NotSpecified); } return; } if (!_containsAny(tab, tuples)) { tab.IgnoreFilterOnce(); tab.Filter(); _waitForFilter(tab); } if (!_containsAny(tab2, tuples)) { tab2.IgnoreFilterOnce(); tab2.Filter(); _waitForFilter(tab2); } if (!_containsAny(tab, tuples) && !_containsAny(tab2, tuples2)) { if (!_containsAny(tab, tuples) && !_containsAny(tab2, tuples2)) { if (changeTab) { ErrorHandler.HandleException((tuplesGen.Count > 1 ? "Items" : "Item") + " not found in either [" + tabName.DisplayName + "] or [" + tabName.AdditionalTable.DisplayName + "], but . Try clearing the search filter on the specified table.", ErrorLevel.NotSpecified); } return; } } GDbTab tabToSelect = _containsAny(tab2, tuples2) ? tab2 : tab; if (changeTab) { tabToSelect.Dispatch(p => p.IsSelected = true); } _waitForFilter(tabToSelect); tabToSelect.Dispatch(p => p.SelectItems(tabToSelect == tab ? tuples : tuples2)); } else { if (item == null) { return; } if (changeTab) { item.Dispatch(p => p.IsSelected = true); } } } } } catch { } finally { IsSelecting = false; } }