private static void UpdateEventStart(HPatternInstance instance, HPatternSettings settings, Transaction transaction, BasicParser parser) { StringBuilder eventCodeStart = new StringBuilder(100); eventCodeStart.AppendLine(Messages.VersionHPattern()); Generator.GeneratorParameters parameters = new Generator.GeneratorParameters(); DefaultProvider.PrepareTemplateParameters(parameters); parameters.Properties["Settings"] = settings; parameters.Properties["tipo"] = 0; AppendTemplateOutput(eventCodeStart, "SubLoadContext", parameters); //if (settings.Security.Enabled) //{ eventCodeStart.AppendLine("[web]"); eventCodeStart.AppendLine("{"); parameters.Properties["Instance"] = instance; parameters.Properties["IsTransaction"] = true; AppendTemplateOutput(eventCodeStart, "SubCheckSecurity", parameters); //} if (settings.Security.EventStart != String.Empty) { eventCodeStart.AppendLine(""); eventCodeStart.AppendLine(settings.Security.EventStart); } eventCodeStart.AppendLine(); eventCodeStart.Append("}"); if (settings.Template.UseTransactionContext) { if (eventCodeStart.Length > 0) eventCodeStart.AppendLine(); eventCodeStart.AppendLine("&TrnContext.FromXml(&WebSession.Get(!\"TrnContext\"))"); if (HasContextAttributes(transaction)) { eventCodeStart.AppendLine("If (&TrnContext.TransactionName = &Pgmname and &Mode = TrnMode.Insert)"); eventCodeStart.AppendLine("\tFor &TrnContextAtt in &TrnContext.Attributes"); bool first = true; foreach (TransactionAttribute icAtt in ContextAttributes(transaction)) { if (first) { eventCodeStart.AppendLine("\t\tDo Case"); first = false; } eventCodeStart.AppendFormat("\t\t\t// When inserting with instantiated {0}\r\n", icAtt.Name); eventCodeStart.AppendFormat("\t\t\tCase &TrnContextAtt.AttributeName = !\"{0}\"\r\n", icAtt.Name); eventCodeStart.AppendFormat("\t\t\t\t&Insert_{0}.FromString(&TrnContextAtt.AttributeValue)\r\n", icAtt.Name); } if (!first) eventCodeStart.AppendLine("\t\tEndcase"); eventCodeStart.AppendLine("\tEndfor"); eventCodeStart.Append("Endif"); } } if (settings.Template.EventStart != String.Empty) { eventCodeStart.AppendLine(""); eventCodeStart.AppendLine(settings.Template.EventStart); } eventCodeStart.AppendLine(""); eventCodeStart.AppendLine("[web]"); eventCodeStart.AppendLine("{"); IBaseCollection<RowElement> lista = instance.Transaction.GetRows("",true,true); foreach (RowElement row in lista) { foreach (ColumnElement col in row.Columns) { foreach (VariableElement var in col.Variables) { if (var.Domain != null || var.Attribute != null) { if (!var.Visible || !row.Visible) { eventCodeStart.AppendLine(""); eventCodeStart.AppendFormat("&{0}.Visible = false", var.Name); } if (!String.IsNullOrEmpty(var.LoadCode)) { eventCodeStart.AppendLine(""); eventCodeStart.AppendLine(var.LoadCode); } if (!String.IsNullOrEmpty(var.LinksEventStart)) { eventCodeStart.AppendLine(""); eventCodeStart.AppendLine(var.LinksEventStart); } } } foreach (AttributeElement att in col.Attributes) { if (att.Attribute != null) { if (!att.Visible || !row.Visible) { eventCodeStart.AppendLine(""); eventCodeStart.AppendFormat("{0}.Visible = false", att.AttributeName); } if (!String.IsNullOrEmpty(att.LinksEventStart)) { eventCodeStart.AppendLine(""); eventCodeStart.AppendLine(att.LinksEventStart); } if (!String.IsNullOrEmpty(att.EventStart)) { eventCodeStart.AppendLine(""); eventCodeStart.AppendLine(String.Format(att.EventStart, att.AttributeName, att.AttributeName)); } } } foreach (TextElement text in col.Texts) { if (!text.Visible || !row.Visible) { eventCodeStart.AppendLine(""); eventCodeStart.AppendFormat("{0}.Visible = false", text.Name); } } } } //} bool setFocus = instance.Transaction.GetSetFocus; /* settings.Template.TransactionSetFocus; if (instance.Transaction.SetFocus.ToLower() == "true") setFocus = true; if (instance.Transaction.SetFocus.ToLower() == "true") setFocus = false; */ Artech.Genexus.Common.Objects.Attribute setFocusAtt = instance.Transaction.SetFocusAttribute; if (setFocusAtt == null && transaction.Structure.Root.DescriptionAttribute != null) { setFocusAtt = transaction.Structure.Root.DescriptionAttribute.Attribute; } if (setFocus && setFocusAtt != null) { eventCodeStart.AppendLine(); eventCodeStart.AppendLine(setFocusAtt.Name + ".SetFocus()"); } eventCodeStart.AppendLine(""); // Se não vou gerar BC e tenho abas if (!instance.Transaction.WebBC && instance.Transaction.Form.Tabs.Count > 0) { Tab tabs = Tab.getTab(instance.Transaction.Form, transaction); eventCodeStart.Append(tabs.Events()); //eventCodeStart.Append( TemplateAbas.Start(instance.Transaction.Form)); } eventCodeStart.AppendLine(Helpers.Template.HMaskEventStart(instance.Transaction, "", false)); eventCodeStart.AppendLine("}"); if (!String.IsNullOrEmpty(instance.Transaction.EventStart)) { eventCodeStart.AppendLine(Indentation.Indent(instance.Transaction.EventStart, 1)); } if (eventCodeStart.Length > 0) UpdateEventCode(parser, new string[] { "Start" }, eventCodeStart.ToString()); }
internal XmlDocument AppendTemplateOutputInner(KBObject obj, KBObjectPart part, PatternInstanceElement element, String template) { Generator.GeneratorParameters parms = new Generator.GeneratorParameters(); DefaultProvider.PrepareTemplateParameters(parms); parms.Properties["Object"] = obj; parms.Properties["Part"] = part; parms.Properties["Instance"] = Instance; parms.Properties["Element"] = element; StringBuilder sb = new StringBuilder(); Heurys.Patterns.HPattern.HPatternTransactionUpdater.AppendTemplateOutput(sb, template, parms); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(sb.ToString()); return xmlDocument; }