Exemple #1
0
        private void PathMouseDown(object sender, MouseEventArgs e)
        {
            var edge = (Edge <FaultTreeNode>)((EdgeViewModel)((FrameworkElement)sender).DataContext).Edge;

            if (edge.Source is FaultTreeTerminalNode)
            {
                return;
            }

            FaultTreeNode node;

            switch (this.EditorMode)
            {
            case VisualEditorMode.MODE_ADD_AND_GATE:
                node = new FaultTreeAndGateNode(this.ViewModel.FaultTree.NextId());
                break;

            case VisualEditorMode.MODE_ADD_OR_GATE:
                node = new FaultTreeOrGateNode(this.ViewModel.FaultTree.NextId());
                break;

            default:
                return;
            }

            edge.Source.Childs.Add(node);
            edge.Source.Childs.Remove(edge.Destination);
            node.Childs.Add(edge.Destination);

            this.ViewModel.RaisePropertyChanged("FaultTree");
            this.EditorMode = VisualEditorMode.MODE_VIEW_ONLY;
        }
Exemple #2
0
        /// <summary>
        /// The transform.
        /// </summary>
        /// <param name="gate">
        /// The gate.
        /// </param>
        /// <param name="childs">
        /// The childs.
        /// </param>
        /// <returns>
        /// The <see cref="FaultTreeNode"/>.
        /// </returns>
        public override FaultTreeNode Transform(FaultTreeAndGateNode gate, List <FaultTreeNode> childs)
        {
            bool all = true;

            foreach (FaultTreeNode c in childs)
            {
                if (c.GetType() == typeof(FaultTreeLiteralNode))
                {
                    if (((FaultTreeLiteralNode)c).Value == false)
                    {
                        return(this.CreateNode(new FaultTreeLiteralNode(gate.ID, false)));
                    }
                }
                else
                {
                    all = false;
                }
            }

            return(all ? this.CreateNode(new FaultTreeLiteralNode(gate.ID, true)) : base.Transform(gate, childs));
        }
Exemple #3
0
        private void EditorDownGate(FrameworkElement sender)
        {
            FaultTreeNode vertex;

            switch (this.EditorMode)
            {
            case VisualEditorMode.MODE_ADD_AND_GATE:
                vertex = new FaultTreeAndGateNode(this.ViewModel.FaultTree.NextId());
                break;

            case VisualEditorMode.MODE_ADD_OR_GATE:
                vertex = new FaultTreeOrGateNode(this.ViewModel.FaultTree.NextId());
                break;

            case VisualEditorMode.MODE_ADD_BASIC_EVENT:
                FaultTreeTerminalNode node = sender.DataContext as FaultTreeTerminalNode;
                if (node != null)
                {
                    vertex = new FaultTreeTerminalNode(this.ViewModel.FaultTree.NextId(), this.ViewModel.FaultTree.NextBasicEvent());
                    this.ViewModel.FaultTree.MarkovChain.InitialDistribution[(FaultTreeTerminalNode)vertex] = 1.0;
                    this.ViewModel.FaultTree.MarkovChain[node, (FaultTreeTerminalNode)vertex] = 1.0;
                    this.ViewModel.FaultTree.MarkovChain[(FaultTreeTerminalNode)vertex, node] = 1.0;
                    this.ViewModel.RaisePropertyChanged("FaultTree");
                    this.EditorMode = VisualEditorMode.MODE_VIEW_ONLY;
                    return;
                }
                vertex = new FaultTreeTerminalNode(this.ViewModel.FaultTree.NextId(), this.ViewModel.FaultTree.NextBasicEvent());
                this.ViewModel.FaultTree.MarkovChain.InitialDistribution[(FaultTreeTerminalNode)vertex] = 1.0;
                break;

            default:
                return;
            }

            this.ViewModel.NewEdgeStart = (FaultTreeNode)sender.DataContext;
            this.ViewModel.NewEdgeEnd   = vertex;
            this.ViewModel.CreateEdge();
            this.EditorMode = VisualEditorMode.MODE_VIEW_ONLY;
        }
Exemple #4
0
 /// <summary>
 /// The transform.
 /// </summary>
 /// <param name="gate">
 /// The gate.
 /// </param>
 /// <param name="childs">
 /// The childs.
 /// </param>
 /// <returns>
 /// The <see cref="int"/>.
 /// </returns>
 public override int Transform(FaultTreeAndGateNode gate, List <int> childs)
 {
     return(childs.DefaultIfEmpty(0).Max());
 }
Exemple #5
0
 /// <summary>
 /// The transform.
 /// </summary>
 /// <param name="gate">
 /// The gate.
 /// </param>
 /// <param name="childs">
 /// The childs.
 /// </param>
 /// <returns>
 /// The <see cref="FaultTreeNode"/>.
 /// </returns>
 public override FaultTreeNode Transform(FaultTreeAndGateNode gate, List <FaultTreeNode> childs)
 {
     return(this.CreateNode(new FaultTreeAndGateNode(gate.ID, childs)));
 }
Exemple #6
0
 /// <summary>
 /// The transform.
 /// </summary>
 /// <param name="gate">
 /// The gate.
 /// </param>
 /// <param name="childs">
 /// The childs.
 /// </param>
 /// <returns>
 /// The <see cref="int"/>.
 /// </returns>
 public override int Transform(FaultTreeAndGateNode gate, List <int> childs)
 {
     return(childs.Min());
 }
 /// <summary>
 /// The transform overwritten by the <see cref="FaultTreeAndGateNode"/>.
 /// </summary>
 /// <param name="gate">
 /// The gate.
 /// </param>
 /// <param name="childs">
 /// The childs.
 /// </param>
 /// <returns>
 /// The <see>
 ///         <cref>T</cref>
 ///     </see>
 ///     .
 /// </returns>
 public abstract T Transform(FaultTreeAndGateNode gate, List <T> childs);