public static EditOperationType?GetEditOperationType(this BasicFeatureLayer layer) { if (layer.ConnectionStatus == ConnectionStatus.Broken) { return(null); } var gdbType = layer.GetGeodatabaseType(); var regType = layer.GetRegistrationType(); //Plugin - new at 2.3 if (gdbType == null) { return(null); } //FileSystem if (gdbType == GeodatabaseType.FileSystem) { return(EditOperationType.Long); } //LocalDatabase if (gdbType == GeodatabaseType.LocalDatabase) { return(EditOperationType.Long); } //RemoteDatabase, Versioned if (gdbType == GeodatabaseType.RemoteDatabase && ( regType == RegistrationType.Versioned || regType == RegistrationType.VersionedWithMoveToBase)) { return(EditOperationType.Long); } //RemoteDatabase, NonVersioned if (gdbType == GeodatabaseType.RemoteDatabase && regType == RegistrationType.Nonversioned) { return(EditOperationType.Short); } //Service, NonVersioned if (gdbType == GeodatabaseType.Service && regType == RegistrationType.Nonversioned) { return(EditOperationType.Short); } //Service, Versioned, Default EditOperationType forBranch = EditOperationType.Long; if (gdbType == GeodatabaseType.Service && regType == RegistrationType.Versioned) { using (var dataset = layer.GetTable()) using (var gdb = dataset.GetDatastore() as Geodatabase) using (var vmgr = gdb.GetVersionManager()) using (var vers = vmgr.GetCurrentVersion()) using (var parent = vers.GetParent()) { //non-default supports undo/redo and save/discard. Default does not forBranch = parent != null ? EditOperationType.Long : EditOperationType.Short; } } return(forBranch); }
internal bool ApplyEditChanges(EditOperationType operation, string firstValue, string secondValue) { if (operation == EditOperationType.Add) { if (string.IsNullOrEmpty(firstValue) || string.IsNullOrEmpty(secondValue)) { return(false); } switch (CurrentMode) { case EditContextMode.Soilders: var updatedSoilderMetaDataTable = new List <SoldierMetaData>(SoilderMetaDataTable); updatedSoilderMetaDataTable.Add(new SoldierMetaData(firstValue, secondValue)); DataLayerAdapter.WriteToSoilderMetaDataTable(updatedSoilderMetaDataTable); SoilderMetaDataTable = new ObservableCollection <SoldierMetaData>(updatedSoilderMetaDataTable); MainWindow.SoilderMetaDataItems.ItemsSource = null; MainWindow.SoilderMetaDataItems.ItemsSource = SoilderMetaDataTable; break; case EditContextMode.Equipment: var updatedEquipmentMetaDataTable = new List <EquipmentMetaData>(EquipmentMetaDataTable); updatedEquipmentMetaDataTable.Add(new EquipmentMetaData(firstValue, secondValue)); DataLayerAdapter.WriteToEquipmentMetaDataTable(updatedEquipmentMetaDataTable); EquipmentMetaDataTable = new ObservableCollection <EquipmentMetaData>(updatedEquipmentMetaDataTable); MainWindow.EquipmentMetaDataItems.ItemsSource = null; MainWindow.EquipmentMetaDataItems.ItemsSource = EquipmentMetaDataTable; break; case EditContextMode.SoildersEquipmentMapping: break; } } else if (operation == EditOperationType.Remove) { if (string.IsNullOrEmpty(firstValue) || string.IsNullOrEmpty(secondValue)) { return(false); } switch (CurrentMode) { case EditContextMode.Soilders: var updatedSoilderMetaDataTable = new List <SoldierMetaData>(SoilderMetaDataTable); updatedSoilderMetaDataTable.Remove(new SoldierMetaData(firstValue, secondValue)); if (updatedSoilderMetaDataTable.Count == SoilderMetaDataTable.Count) { return(false); } DataLayerAdapter.WriteToSoilderMetaDataTable(updatedSoilderMetaDataTable); SoilderMetaDataTable = new ObservableCollection <SoldierMetaData>(updatedSoilderMetaDataTable); MainWindow.SoilderMetaDataItems.ItemsSource = null; MainWindow.SoilderMetaDataItems.ItemsSource = SoilderMetaDataTable; break; case EditContextMode.Equipment: break; case EditContextMode.SoildersEquipmentMapping: break; } } return(true); }