예제 #1
0
        private void UpdateHistory(WFnode currentNode, ActionResult ar)
        {
            IEnumerable <WFnode> nodel = workflow.getNodeList();
            //List<string> BackNodes = BackTrace(workflow, currentNode.Name);
            List <string> BackNodes = workflow.GetThroughPath();
            List <string> nodeNames = new List <string>();

            foreach (WFnode n in nodel)
            {
                nodeNames.Add(n.Name);
            }

            List <string> ns = new List <string>();

            ns = workflow.GetThroughPath();

            if (ns.Count > 0 && ar.OK)
            {
                string initNode      = "";
                int    initNodeIndex = 0;

                for (int i = 0; i < nodeNames.Count; i++)
                {
                    if (nodeNames[i] == ns[ns.Count - 1])
                    {
                        initNode      = nodeNames[i];
                        initNodeIndex = i;
                    }
                }
                string tmp = nodeNames[0];

                nodeNames.RemoveAt(0);
                nodeNames.Insert(0, initNode);
                nodeNames.RemoveAt(initNodeIndex);
                nodeNames.Insert(initNodeIndex, tmp);

                int h = 1;
                for (int i = ns.Count - 2; i >= 0; i--)
                {
                    nodeNames.RemoveAt(h);
                    nodeNames.Insert(h, ns[i]);
                    h++;
                }
                if (ns.Count < nodeNames.Count)
                {
                    nodeNames.RemoveAt(ns.Count);
                    nodeNames.Insert(ns.Count, workflow.GetState().Name);
                }

                for (int i = ns.Count + 1; i < nodeNames.Count; i++)
                {
                    nodeNames[i] = "";
                }

                for (int l = 0; l < nodeNames.Count; l++)
                {
                    ((ImageButton)presenPanel3.Controls[l]).ToolTip = nodeNames[l];
                }
            }
            if (ns.Count == 0 && ar.OK)
            {
                string initNode      = "";
                int    initNodeIndex = 0;

                for (int i = 0; i < nodeNames.Count; i++)
                {
                    if (nodeNames[i] == workflow.GetState().Name)
                    {
                        initNode      = nodeNames[i];
                        initNodeIndex = i;
                    }
                }
                string tmp = nodeNames[0];

                nodeNames.RemoveAt(0);
                nodeNames.Insert(0, initNode);
                nodeNames.RemoveAt(initNodeIndex);
                nodeNames.Insert(initNodeIndex, tmp);

                for (int i = ns.Count + 1; i < nodeNames.Count; i++)
                {
                    nodeNames[i] = "";
                }

                for (int l = 0; l < nodeNames.Count; l++)
                {
                    ((ImageButton)presenPanel3.Controls[l]).ToolTip = nodeNames[l];
                }
            }



            foreach (Control c in presenPanel3.Controls)
            {
                c.Visible = true;
            }
            if (workflow.IsFinalState())
            {
                foreach (Control c in presenPanel3.Controls)
                {
                    if (((ImageButton)c).ToolTip == "")
                    {
                        c.Visible = false;
                    }
                }
            }

            int k = 0;

            foreach (string n in nodeNames)
            {
                if (BackNodes.Contains(((ImageButton)presenPanel3.Controls[k]).ToolTip))
                {
                    ((ImageButton)presenPanel3.Controls[k]).Enabled  = true;
                    ((ImageButton)presenPanel3.Controls[k]).ImageUrl = "../lib/image/backNode.PNG";
                    if (k == 0)
                    {
                        ((ImageButton)presenPanel3.Controls[k]).Attributes.Add("style", "margin-left:5px;margin-bottom:8px;");
                    }
                    else
                    {
                        ((ImageButton)presenPanel3.Controls[k]).Attributes.Add("style", "margin-bottom:8px;");
                    }
                }
                else
                {
                    ((ImageButton)presenPanel3.Controls[k]).Enabled  = false;
                    ((ImageButton)presenPanel3.Controls[k]).ImageUrl = "../lib/image/forwardNode.PNG";
                    ((ImageButton)presenPanel3.Controls[k]).Attributes.Add("style", "margin-bottom:8px;");
                }

                if (((ImageButton)presenPanel3.Controls[k]).ToolTip == currentNode.Name)
                {
                    ((ImageButton)presenPanel3.Controls[k]).ImageUrl = "../lib/image/currentNode.PNG";
                    ((ImageButton)presenPanel3.Controls[k]).Enabled  = true;
                    if (k == 0)
                    {
                        ((ImageButton)presenPanel3.Controls[k]).Attributes.Add("style", "margin-left:5px;margin-bottom:0px;");
                    }
                    else
                    {
                        ((ImageButton)presenPanel3.Controls[k]).Attributes.Add("style", "margin-left:5px;margin-bottom:0px;");
                    }
                }

                k++;
            }
        }
예제 #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            List <Control> listControl    = new List <Control>();
            string         cbReference    = this.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "");
            string         callBackScript = @"function CallServer(arg, context){" + cbReference + ";}";

            this.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callBackScript, true);

            listControl.Add(new ServiceFakeLog());
            List <Control> .Enumerator it = listControl.GetEnumerator();
            while (it.MoveNext())
            {
                callFill.Controls.Add(it.Current);

                IControlFormFiller t = (IControlFormFiller)it.Current;
                cbReference    = Page.ClientScript.GetCallbackEventReference(it.Current, "arg", t.getNameFunctionServerResponse(), "context");
                callBackScript = @"function " + t.getNameFunctionServerCall() + "(arg, context)" + "{ " + cbReference + ";}";
                Page.ClientScript.RegisterClientScriptBlock(it.Current.GetType(), t.getNameFunctionServerCall(), callBackScript, true);
            }


            if (((IComputableWorkflow)Session["wf"]) != null)
            {
                workflow = (IComputableWorkflow)Session["wf"]; //RIGA DI FIX PER NULL??!!!
                presenPanel.Attributes.Add("style", "position:relative;left:800px;width:0px;display:none;");

                /////////////////////////////////HISTORY//////////////////////////////////////////////////////////////////

                IEnumerable <WFnode> nl        = workflow.getNodeList();
                List <string>        nodeNames = new List <string>();
                foreach (WFnode n in nl)
                {
                    nodeNames.Add(n.Name);
                }

                List <string> ns = new List <string>();
                ns = workflow.GetThroughPath();

                if (ns.Count > 0)
                {
                    string initNode      = "";
                    int    initNodeIndex = 0;

                    for (int i = 0; i < nodeNames.Count; i++)
                    {
                        if (nodeNames[i] == ns[ns.Count - 1])
                        {
                            initNode      = nodeNames[i];
                            initNodeIndex = i;
                        }
                    }
                    string tmp = nodeNames[0];

                    nodeNames.RemoveAt(0);
                    nodeNames.Insert(0, initNode);
                    nodeNames.RemoveAt(initNodeIndex);
                    nodeNames.Insert(initNodeIndex, tmp);

                    int h = 1;
                    for (int i = ns.Count - 2; i >= 0; i--)
                    {
                        nodeNames.RemoveAt(h);
                        nodeNames.Insert(h, ns[i]);
                        h++;
                    }
                    //if (ns.Count < nodeNames.Count)
                    //{
                    //    nodeNames.RemoveAt(ns.Count);
                    //    nodeNames.Insert(ns.Count, workflow.GetState().Name);
                    //}
                }
                else
                {
                    string initNode      = "";
                    int    initNodeIndex = 0;

                    for (int i = 0; i < nodeNames.Count; i++)
                    {
                        if (nodeNames[i] == workflow.GetState().Name)
                        {
                            initNode      = nodeNames[i];
                            initNodeIndex = i;
                        }
                    }
                    string tmp = nodeNames[0];

                    nodeNames.RemoveAt(0);
                    nodeNames.Insert(0, initNode);
                    nodeNames.RemoveAt(initNodeIndex);
                    nodeNames.Insert(initNodeIndex, tmp);
                }

                int W = ((nodeNames.Count() - 1) * 16) + 32 + ((nodeNames.Count()) * 5);
                int L = 480 - W / 2;
                presenPanel3.Attributes.Add("style", "position:relative;width:" + W + "px;margin:4px 0px 10px 0px;left:" + L + "px;");//"style", "position:relative;width:100%;margin:4px 0px 10px 0px;left:0px;"

                WFnode actual = workflow.GetState();
                int    j      = 0;
                presenPanel3.Controls.Clear();
                foreach (string n in nodeNames)
                {
                    ImageButton l = new ImageButton();
                    l.ImageUrl = "../lib/image/backNode.PNG";
                    l.CssClass = "HistoryLabel";
                    //if (j == 0)
                    //    l.ToolTip = nodeNames[0];
                    l.ToolTip = nodeNames[j];
                    if (!IsPostBack)
                    {
                        if (j == 0)
                        {
                            l.ImageUrl = "../lib/image/currentNode.PNG";
                            l.Attributes.Add("style", "margin-left:5px;");
                        }
                        else
                        {
                            l.Enabled  = false;
                            l.ImageUrl = "../lib/image/forwardNode.PNG";
                            l.Attributes.Add("style", "margin-left:5px;margin-bottom:8px;");
                        }
                    }
                    l.ID = j.ToString();
                    //l.OnClientClick = "slideRightToLeft();";
                    l.Click           += new ImageClickEventHandler(l_Click);
                    l.CausesValidation = false;
                    presenPanel3.Controls.Add(l);
                    j++;
                }


                /////////////////////////////////HISTORY//////////////////////////////////////////////////////////////////
            }
        }