Esempio n. 1
0
        /// <summary> Add a Node to its childs
        /// </summary>
        /// <param name="n">new node
        ///
        /// </param>
        public virtual void  addToChilds(BaseNode n)
        {
            ViewGraphNode node = new ViewGraphNode(n);

            childs.add(node);
            node.parents.add(this);
            invalidateSubtreeWidth();
        }
Esempio n. 2
0
        /// <summary> Builds a complete Graph by traversing root
        /// </summary>
        /// <param name="">root
        ///
        /// </param>
        public static ViewGraphNode buildFromRete(RootNode root)
        {
            Collection    firstLevel = root.ObjectTypeNodes.values();
            ViewGraphNode res        = new ViewGraphNode();

            System.Collections.Hashtable ht = new System.Collections.Hashtable();
            for (Iterator iter = firstLevel.iterator(); iter.hasNext();)
            {
                BaseNode b = (BaseNode)iter.next();
                res.addToChilds(buildFromRete(b, ht));
            }
            return(res);
        }
Esempio n. 3
0
 internal virtual void  traverse(int indent, BaseNode b)
 {
     for (int i = 0; i < indent; i++)
     {
         System.Console.Out.Write(" ");
     }
     //UPGRADE_TODO: The equivalent in .NET for method 'java.Object.toString' may return a different value. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1043"'
     System.Console.Out.WriteLine("+" + b.ToString() + " id=" + b.NodeId);
     for (int i = 0; i < b.SuccessorNodes.Length; i++)
     {
         traverse(indent + 2, (BaseNode)b.SuccessorNodes[i]);
     }
 }
Esempio n. 4
0
        protected internal virtual void  getCorrespondingTerminalNodes(ViewGraphNode root, Set target)
        {
            BaseNode n = root.ReteNode;

            if (n is TerminalNode)
            {
                target.add(n);
            }
            Iterator it = root.childs.iterator();

            while (it.hasNext())
            {
                ViewGraphNode succ = (ViewGraphNode)it.next();
                getCorrespondingTerminalNodes(succ, target);
            }
        }
Esempio n. 5
0
        protected internal static ViewGraphNode buildFromRete(BaseNode root, System.Collections.Hashtable ht)
        {
            System.Object[] succ = root.SuccessorNodes;
            ViewGraphNode   foo  = (ViewGraphNode)ht[root];
            ViewGraphNode   res  = null;

            if (foo == null)
            {
                res = new ViewGraphNode(root);
                for (int i = 0; i < succ.Length; i++)
                {
                    res.addToChilds(buildFromRete((BaseNode)succ[i], ht));
                }
                SupportClass.PutElement(ht, root, res);
            }
            else
            {
                res = foo;
            }
            return(res);
        }
Esempio n. 6
0
 /// <summary> Yet another constructor ;)
 /// </summary>
 public ViewGraphNode(BaseNode n) : this()
 {
     ReteNode = n;
 }
Esempio n. 7
0
        protected internal virtual Shape makeShapeFromNode(ViewGraphNode act, LinkedList queue)
        {
            System.Drawing.Color bg       = getBackgroundColorForNode(act);
            System.Drawing.Color border   = getBorderColorForNode(act);
            System.String        desc     = "";
            BaseNode             reteNode = act.ReteNode;
            HashSet terminalNodes         = new HashSet();

            getCorrespondingTerminalNodes(act, terminalNodes);
            if (reteNode != null)
            {
                desc = reteNode.NodeId.ToString();
            }
            Shape s;

            if (reteNode == null)
            {
                // ROOT NODE
                s = new Ellipse();
            }
            else if (reteNode is BaseJoin || act.ReteNode is BaseAlpha2)
            {
                s = new Trapezoid();
            }
            else if (reteNode is TerminalNode)
            {
                s = new RoundedRectangle();
            }
            else if (reteNode is LIANode)
            {
                s = new Ellipse();
            }
            else
            {
                s = new Rectangle();
            }
            s.Bgcolor     = bg;
            s.Bordercolor = border;
            //UPGRADE_WARNING: Narrowing conversions may produce unexpected results in C#. 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="jlca1042"'
            int x = (spaceHorizontal / 2) + (int)((float)(act.X * (spaceHorizontal + nodeHorizontal)) / 2.0);
            int y = (spaceVertical / 2) + act.Y * (spaceVertical + nodeVertical);

            System.String key = x + "," + y;
            // if there is already a node at the given location, we shift it right
            while (this.coordinates.ContainsKey(key))
            {
                x   = x + ((spaceHorizontal + nodeHorizontal) * 2);
                key = x + "," + y;
            }
            SupportClass.PutElement(coordinates, key, s);
            s.X      = x;
            s.Y      = y;
            s.Width  = nodeHorizontal;
            s.Height = nodeVertical;
            System.String longdesc = "";
            if (reteNode == null)
            {
                longdesc = "Root Node";
            }
            else
            {
                longdesc  = "ID:" + reteNode.NodeId + "  NodeType:" + reteNode.GetType().FullName;
                longdesc += "  Details:" + reteNode.toPPString();
            }
            longdesc += "  Rules:";
            Iterator iter = terminalNodes.iterator();

            while (iter.hasNext())
            {
                TerminalNode t = (TerminalNode)iter.next();

                longdesc += t.Rule.Name;
                if (iter.hasNext())
                {
                    longdesc += ";";
                }
            }
            s.LongDescription = longdesc;
            if (reteNode is LIANode)
            {
                s.incWidth(-nodeHorizontal / 3);
            }
            s.Text    = desc;
            act.Shape = s;
            addPrimitive(s);
            for (Iterator it = act.Successors.iterator(); it.hasNext();)
            {
                ViewGraphNode n = (ViewGraphNode)it.next();
                queue.add(n);
            }
            return(s);
        }
Esempio n. 8
0
 /// <summary> Yet another constructor ;)
 /// </summary>
 public ViewGraphNode(BaseNode n)
     : this()
 {
     ReteNode = n;
 }
Esempio n. 9
0
 protected internal static ViewGraphNode buildFromRete(BaseNode root, System.Collections.Hashtable ht)
 {
     System.Object[] succ = root.SuccessorNodes;
     ViewGraphNode foo = (ViewGraphNode) ht[root];
     ViewGraphNode res = null;
     if (foo == null)
     {
         res = new ViewGraphNode(root);
         for (int i = 0; i < succ.Length; i++)
         {
             res.addToChilds(buildFromRete((BaseNode) succ[i], ht));
         }
         SupportClass.PutElement(ht, root, res);
     }
     else
     {
         res = foo;
     }
     return res;
 }
Esempio n. 10
0
 /// <summary> Add a Node to its childs
 /// </summary>
 /// <param name="n">new node
 /// 
 /// </param>
 public virtual void addToChilds(BaseNode n)
 {
     ViewGraphNode node = new ViewGraphNode(n);
     childs.add(node);
     node.parents.add(this);
     invalidateSubtreeWidth();
 }