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++; } }
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////////////////////////////////////////////////////////////////// } }