예제 #1
0
        ///<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);
                }
            }
        }
예제 #2
0
        ///<summary>
        ///</summary>
        public DamageChartImageControl(DamageDocument doc)
        {
            _currentDocument = doc;

            InitializeComponent();

            UpdateInformation();
        }
예제 #3
0
        ///<summary>
        ///</summary>
        public DamageChartFileControlNew(DamageDocument doc, Aircraft currentAircraft)
        {
            _currentDocument = doc;
            _currentAircraft = currentAircraft;

            InitializeComponent();

            UpdateInformation();
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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;
        }
예제 #8
0
        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;
        }
예제 #9
0
        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;
            }
        }
예제 #10
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);
            }
        }
예제 #11
0
        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");
        }
예제 #12
0
        ///<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;
            }
        }
예제 #13
0
        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;
        }
예제 #14
0
        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;
            }
        }