///<summary> ///</summary> private void UpdateInformation() { if (_currentDirctive == null || _currentDirctive.DamageDocs == null || _currentAircraft == null) { return; } if (_currentDirctive.DamageDocs.Count == 0) { //если у родителя нет ни одного Damage Doc-а, то ему добавляется в коллекцию Damage Doc-ов //пустой Damage Doc, ради того, что бы при появлении формы она не была пустой //если пользователь не изменит объект пустого Damage Doc-а, то данный Damage Doc при //закрытии формы не сохранится и произоидет удаление всех пустых Damage Doc-ов из //коллекции Damage Doc-ов родителя DamageDocument damageDoc = new DamageDocument(1, _currentDirctive.ItemId); _currentDirctive.DamageDocs.Add(damageDoc); DamageDocument imageDoc = new DamageDocument(2, _currentDirctive.ItemId); _currentDirctive.DamageDocs.Add(imageDoc); } int countCharts = 0, countImages = 0; foreach (DamageDocument doc in _currentDirctive.DamageDocs) { if (doc.DocumentTypeId == 1) { DamageChartFileControlNew docControl = new DamageChartFileControlNew(doc, _currentAircraft); docControl.Extended = countCharts == 0; countCharts++; _damageChartsFileControls.Add(docControl); docControl.Deleted += ChartDeleted; flowLayoutPanelCharts.Controls.Remove(panelButtonsFiles); flowLayoutPanelCharts.Controls.Add(docControl); flowLayoutPanelCharts.Controls.Add(panelButtonsFiles); } if (doc.DocumentTypeId == 2) { DamageChartImageControl docControl = new DamageChartImageControl(doc); if (countImages == 0) { docControl.Extended = true; } else { docControl.Extended = false; } countImages++; _damageImagesFileControls.Add(docControl); docControl.Deleted += ImageDeleted; flowLayoutPanelImages.Controls.Remove(panelButtonsImages); flowLayoutPanelImages.Controls.Add(docControl); flowLayoutPanelImages.Controls.Add(panelButtonsImages); } } }
///<summary> ///</summary> public DamageChartImageControl(DamageDocument doc) { _currentDocument = doc; InitializeComponent(); UpdateInformation(); }
///<summary> ///</summary> public DamageChartFileControlNew(DamageDocument doc, Aircraft currentAircraft) { _currentDocument = doc; _currentAircraft = currentAircraft; InitializeComponent(); UpdateInformation(); }
void ImageDeleted(object sender, EventArgs e) { DamageChartImageControl control = (DamageChartImageControl)sender; DamageDocument doc = control.DamageDocument; GlobalObjects.CasEnvironment.Manipulator.Delete(doc); _currentDirctive.DamageDocs.Remove(control.DamageDocument); _damageImagesFileControls.Remove(control); flowLayoutPanelImages.Controls.Remove(control); }
private void ButtonAddImageClick(object sender, EventArgs e) { DamageDocument newDoc = new DamageDocument(2, _currentDirctive.ItemId); _currentDirctive.DamageDocs.Add(newDoc); DamageChartImageControl newImage = new DamageChartImageControl(newDoc); _damageImagesFileControls.Add(newImage); newImage.Deleted += ImageDeleted; flowLayoutPanelImages.Controls.Remove(panelButtonsImages); flowLayoutPanelImages.Controls.Add(newImage); flowLayoutPanelImages.Controls.Add(panelButtonsImages); }
private void ButtonAddChartClick(object sender, EventArgs e) { DamageDocument newDoc = new DamageDocument(1, _currentDirctive.ItemId); _currentDirctive.DamageDocs.Add(newDoc); DamageChartFileControlNew newChart = new DamageChartFileControlNew(newDoc, _currentAircraft); _damageChartsFileControls.Add(newChart); newChart.Deleted += ChartDeleted; flowLayoutPanelCharts.Controls.Remove(panelButtonsFiles); flowLayoutPanelCharts.Controls.Add(newChart); flowLayoutPanelCharts.Controls.Add(panelButtonsFiles); }
private void AddNewChartButtonOnClick(object sender, RoutedEventArgs e) { DamageDocument newDoc = new DamageDocument(1, _currentDirctive.ItemId); DamageChartImage dci = _chartImages.FirstOrDefault(ci => ci.ChartName == newDoc.DamageChart2DImageName) ?? _selectDamageChartImage; if (dci != null) { newDoc.DamageChart2DImageName = dci.ChartName; newDoc.DamageChartImage = dci.Image; } DamageChartsListView.Items.Add(newDoc); DamageChartsListView.SelectedIndex = DamageChartsListView.Items.Count - 1; }
private void DamageChartsListView_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { DamageDocument doc = DamageChartsListView.SelectedItem as DamageDocument; if (doc == null) { return; } DamageChartImage dci = _chartImages.FirstOrDefault(ci => ci.ChartName == doc.DamageChart2DImageName) ?? _selectDamageChartImage; if (dci == null) { return; } ChartComboBox.SelectedItem = dci; }
private void CloseButton_OnClick(object sender, RoutedEventArgs e) { FrameworkElement uiElement = sender as FrameworkElement; if (uiElement == null) { return; } DamageDocument doc = uiElement.Tag as DamageDocument; if (doc != null) { DamageChartsListView.Items.Remove(doc); } if (DamageChartsListView.Items.Count > 0) { DamageChartsListView.SelectedIndex = 0; } }
/// <summary> /// Добавляет DamageChart на воздушное судно /// </summary> /// <param name="damageDocument"></param> public void AddDamageDocument(DamageDocument damageDocument) { // Дополняем необходимые свойства и сохраняем в базе данных _newKeeper.Save(damageDocument); List <DamageSector> sectorsToDelete = new List <DamageSector>(); foreach (DamageSector damageSector in damageDocument.DamageSectors) { _newKeeper.Save(damageSector); if (damageSector.IsDeleted) { sectorsToDelete.Add(damageSector); } } foreach (DamageSector sector in sectorsToDelete) { damageDocument.DamageSectors.Remove(sector); } }
public void SmartCoreFileTest_DamageDocument() { var enviroment = GetEnviroment(); var damageDocument = new DamageDocument { DamageDocFile = new AttachedFile { FileName = "DamageDocFile.test" }, }; enviroment.NewKeeper.Save(damageDocument); Assert.IsTrue(damageDocument.ItemId > 0, "ItemId должен быть больше 0"); var forCheck = enviroment.NewLoader.GetObject <DamageDocumentDTO, DamageDocument>(new Filter("ItemId", damageDocument.ItemId), true); enviroment.NewKeeper.Delete(damageDocument); Assert.IsTrue(forCheck != null, "значение не должно быть null"); Assert.AreEqual(forCheck.Files.Count, 1, "Кол-во файлов должно быть 1"); Assert.IsTrue(forCheck.DamageDocFile != null); Assert.AreEqual(forCheck.DamageDocFile.FileName, "DamageDocFile.test"); }
///<summary> ///</summary> private void UpdateInformation() { if (_currentDirctive == null || _currentDirctive.DamageDocs == null || _currentAircraft == null) { return; } _chartImages.Clear(); _chartImages.AddRange(new[] { _b737300400500Bs46Leftside, _b737300400500Bs46Rightside, _b737300400500WingLowerSurface, _b737300400500WingUpperSurface, _b737500RearLeft, _b737500Side, _b737500Top, _selectDamageChartImage }); ChartComboBox.Items.Clear(); foreach (DamageChartImage t in _chartImages) { ChartComboBox.Items.Add(t); } DamageChartsListView.Items.Clear(); if (_currentDirctive.DamageDocs.Count == 0) { //если у родителя нет ни одного Damage Doc-а, то ему добавляется в коллекцию Damage Doc-ов //пустой Damage Doc, ради того, что бы при появлении формы она не была пустой //если пользователь не изменит объект пустого Damage Doc-а, то данный Damage Doc при //закрытии формы не сохранится и произоидет удаление всех пустых Damage Doc-ов из //коллекции Damage Doc-ов родителя DamageDocument damageDoc = new DamageDocument(1, _currentDirctive.ItemId); _currentDirctive.DamageDocs.Add(damageDoc); DamageDocument imageDoc = new DamageDocument(2, _currentDirctive.ItemId); _currentDirctive.DamageDocs.Add(imageDoc); } int countCharts = 0, countImages = 0; foreach (DamageDocument document in _currentDirctive.DamageDocs) { if (document.DocumentTypeId == 1) { DamageChartImage dci = _chartImages.FirstOrDefault(ci => ci.ChartName == document.DamageChart2DImageName); if (dci != null) { document.DamageChart2DImageName = dci.ChartName; document.DamageChartImage = dci.Image; } DamageChartsListView.Items.Add(document); } if (document.DocumentTypeId == 2) { //DamageChartImageControl docControl = new DamageChartImageControl(doc); //if (countImages == 0) docControl.Extended = true; //else docControl.Extended = false; //countImages++; //_damageImagesFileControls.Add(docControl); //docControl.Deleted += ImageDeleted; //flowLayoutPanelImages.Controls.Remove(panelButtonsImages); //flowLayoutPanelImages.Controls.Add(docControl); //flowLayoutPanelImages.Controls.Add(panelButtonsImages); } } DamageChartsListView.SelectedIndex = 0; DamageDocument doc = DamageChartsListView.SelectedItem as DamageDocument; if (doc == null) { return; } foreach (DamageSector damageSector in doc.DamageSectors) { if (damageSector.DamageChartColumn < 0 || (damageSector.DamageChartColumn + 1) > ChartGrid.ColumnDefinitions.Count || damageSector.DamageChartRow < 0 || (damageSector.DamageChartRow + 1) > ChartGrid.RowDefinitions.Count) { continue; } UIElement uiElement = null; foreach (UIElement child in ChartGrid.Children) { if (Grid.GetColumn(child) == damageSector.DamageChartColumn && Grid.GetRow(child) == damageSector.DamageChartRow) { uiElement = child; } } if (uiElement == null) { continue; } ToggleButton button = uiElement as ToggleButton; if (button == null) { continue; } button.IsChecked = true; button.Tag = damageSector; System.Windows.Controls.RichTextBox rtb = new System.Windows.Controls.RichTextBox { FontFamily = FontFamily, FontSize = FontSize }; FlowDocumentScrollViewer flowDocument = new FlowDocumentScrollViewer(); string tooltipTex = string.IsNullOrEmpty(damageSector.Remarks) ? "No Information" : damageSector.Remarks; try { //TextRange tr = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); var documentBytes = Encoding.UTF8.GetBytes(tooltipTex); using (var reader = new MemoryStream(documentBytes)) { reader.Position = 0; rtb.SelectAll(); rtb.Selection.Load(reader, System.Windows.DataFormats.Rtf); } flowDocument.Document = rtb.Document; } catch (Exception) { } button.ToolTip = flowDocument; } }
private void DamageSectorButtonClick(object sender, RoutedEventArgs e) { DamageDocument doc = DamageChartsListView.SelectedItem as DamageDocument; if (doc == null) { return; } ToggleButton button = sender as ToggleButton; if (button == null) { return; } if (button.IsChecked == true) { if (button.Tag == null) { DamageSector newDamageSector = new DamageSector { DamageChartColumn = Grid.GetColumn(button), DamageChartRow = Grid.GetRow(button), DamageDocument = doc, }; button.Tag = newDamageSector; doc.DamageSectors.Add(newDamageSector); } else { DamageSector damageSector = button.Tag as DamageSector; if (damageSector == null) { return; } if (damageSector.ItemId > 0) { damageSector.IsDeleted = false; } } } else { if (button.Tag != null) { DamageSector damageSector = button.Tag as DamageSector; if (damageSector == null) { return; } if (damageSector.ItemId > 0) { damageSector.IsDeleted = true; } else { button.Tag = null; } } } //button.IsChecked = !button.IsChecked; }
private void ChartComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { ChartGrid.ColumnDefinitions.Clear(); ChartGrid.RowDefinitions.Clear(); foreach (UIElement uiElement in ChartGrid.Children) { if (uiElement is Button) { ((Button)uiElement).Click -= DamageSectorButtonClick; } } ChartGrid.Children.Clear(); DamageChartImage dci = ChartComboBox.SelectedItem as DamageChartImage ?? _selectDamageChartImage; if (dci == null || dci.Image == null) { return; } try { BitmapConverter converter = new BitmapConverter(); ImageSource imageSource = (ImageSource)converter.Convert(dci.Image, null, null, null); ChartGrid.Width = imageSource.Width; ChartGrid.Height = imageSource.Height; ChartGrid.Background = new ImageBrush(imageSource); } catch (Exception ex) { MessageBox.Show(ex.Message); } for (int i = 0; i < dci.CountColumns; i++) { ChartGrid.ColumnDefinitions.Add(new ColumnDefinition()); } for (int i = 0; i < dci.CountRows; i++) { ChartGrid.RowDefinitions.Add(new RowDefinition()); } for (int i = 0; i < ChartGrid.ColumnDefinitions.Count; i++) { for (int j = 0; j < ChartGrid.RowDefinitions.Count; j++) { ToggleButton newButton = new ToggleButton { Content = "X", VerticalAlignment = VerticalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Stretch, }; newButton.Click += DamageSectorButtonClick; Grid.SetColumn(newButton, i); Grid.SetRow(newButton, j); ChartGrid.Children.Add(newButton); } } DamageDocument doc = DamageChartsListView.SelectedItem as DamageDocument; if (doc == null) { return; } if (doc.DamageChart2DImageName == dci.ChartName) { foreach (DamageSector damageSector in doc.DamageSectors) { if (damageSector.DamageChartColumn < 0 || (damageSector.DamageChartColumn + 1) > ChartGrid.ColumnDefinitions.Count || damageSector.DamageChartRow < 0 || (damageSector.DamageChartRow + 1) > ChartGrid.RowDefinitions.Count) { continue; } UIElement uiElement = null; foreach (UIElement child in ChartGrid.Children) { if (Grid.GetColumn(child) == damageSector.DamageChartColumn && Grid.GetRow(child) == damageSector.DamageChartRow) { uiElement = child; } } if (uiElement == null) { continue; } ToggleButton button = uiElement as ToggleButton; if (button == null) { continue; } button.IsChecked = true; button.Tag = damageSector; System.Windows.Controls.RichTextBox rtb = new System.Windows.Controls.RichTextBox() { FontFamily = FontFamily, FontSize = FontSize }; FlowDocumentScrollViewer flowDocument = new FlowDocumentScrollViewer(); string tooltipTex = string.IsNullOrEmpty(damageSector.Remarks) ? "No Information" : damageSector.Remarks; try { //TextRange tr = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); var documentBytes = Encoding.UTF8.GetBytes(tooltipTex); using (var reader = new MemoryStream(documentBytes)) { reader.Position = 0; rtb.SelectAll(); rtb.Selection.Load(reader, System.Windows.DataFormats.Rtf); } flowDocument.Document = rtb.Document; } catch (Exception) { } button.ToolTip = flowDocument; } } else { doc.DamageChartImage = dci.Image; doc.DamageChart2DImageName = dci.ChartName; } }