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; } }
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); }