예제 #1
0
        private async void FaultTreeNodePress(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount >= 2 && ((FrameworkElement)sender).DataContext is FaultTreeTerminalNode)
            {
                var probabilityInput = await MessageDialogs.ShowInputDialogAsync(
                    "Probability",
                    "Specify an initial probability!",
                    new MetroDialogSettings());

                double probabiliy;
                if (double.TryParse(probabilityInput, out probabiliy))
                {
                    if (probabiliy >= 0 && probabiliy <= 1)
                    {
                        this.ViewModel.FaultTree.MarkovChain.InitialDistribution[(FaultTreeTerminalNode)((FrameworkElement)sender).DataContext] = probabiliy;
                        this.ViewModel.RaisePropertyChanged("FaultTree");
                    }
                }
                return;
            }
            switch (this.EditorMode)
            {
            case VisualEditorMode.MODE_ADD_GATE_CONNECTION:
            case VisualEditorMode.MODE_ADD_MARKOV_CHAIN:
                this.EditorDownConnection((Grid)sender, e);
                break;

            case VisualEditorMode.MODE_ADD_AND_GATE:
            case VisualEditorMode.MODE_ADD_OR_GATE:
            case VisualEditorMode.MODE_ADD_BASIC_EVENT:
                this.EditorDownGate((Grid)sender);
                break;

            case VisualEditorMode.MODE_REMOVE_CONTENT:
                this.EditorDownRemove((Grid)sender);
                break;

            case VisualEditorMode.MODE_ANALYZE_CLICK:
                FaultTree faultTree = new FaultTree((FaultTreeNode)(((Grid)sender).DataContext), this.ViewModel.FaultTree.MarkovChain);
                this.AnalyzeFlyout.IsOpen = true;
                this.Analyze.Initialize(faultTree);
                break;
            }
        }
예제 #2
0
        public TreeRendererFaultTree()
        {
            _faultTree           = new FaultTree();
            _listOfDrawLocations = new List <DrawLocation>();
            _listOfNodeLines     = new List <NodeLine>();
            _pen      = new Pen(Color.Blue);
            _solBrush = new SolidBrush(Color.Blue);

            _textFormatter = new StringFormat();
            _textFormatter.LineAlignment = StringAlignment.Center;
            _textFormatter.Alignment     = StringAlignment.Center;
            _renderBackBufferBitmap      = new Bitmap(VisualFaultTree.DrawAreaSize.Width, VisualFaultTree.DrawAreaSize.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            _renderBackBuffer            = Graphics.FromImage(_renderBackBufferBitmap);

            _font = new Font("Arial", 12.0f);

            BackgroundColour = Color.White;
            TextColour       = Color.Blue;
            LineColour       = Color.Blue;
            NodeFillColour   = Color.Yellow;

            _nodeDrawSize        = new Size();
            _nodeDrawSize.Height = (int)(_font.Height * 2);
        }