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());
        }
Esempio n. 2
0
 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;
 }