public string ViewName(ViewElement view) { return (String.IsNullOrEmpty(view.GetObjectName()) ? ObjectName(this.View, view.Parent.Name) : view.GetObjectName()); }
private void AddSuborTabTrnLevel(ViewElement viewElement, Transaction trn, TransactionLevel subLevel) { TabElement tabElement = viewElement.AddTab(subLevel.Name); tabElement.Name = subLevel.Description; tabElement.Wcname = trn.Name + subLevel.Name + "WC"; tabElement.Description = subLevel.Description; tabElement.Type = TabElement.TypeValue.Grid; tabElement.Page = TabElement.PageValue.Default; AddGridTabAttributes(tabElement, trn, subLevel, subLevel.Attributes); }
private static bool CanRedirectToView(HPatternInstance instance, out ViewElement view) { // Do we have an appropriate view element? if (instance.Levels.Count > 0 && instance.Levels[0].View != null && CanRedirectTo(instance.Levels[0].View)) { view = instance.Levels[0].View; return true; } view = null; return false; }
private void AddSuborTabs(ViewElement tabsNode, Transaction trn, TransactionLevel fatherLvl) { // Tabs for each transaction level subordinated to the first one. List<Table> tablesInTrnLvls = new List<Table>(); foreach (TransactionLevel suborLvl in fatherLvl.Levels) { AddSuborTabTrnLevel(tabsNode, trn, suborLvl); tablesInTrnLvls.Add(suborLvl.AssociatedTable); } // Tabs for other subordinated tables (by FK). foreach (TransactionLevelRelation relation in fatherLvl.GetSubordinations()) { if (!fatherLvl.Levels.Contains(relation.RelatedLevel) && !tablesInTrnLvls.Contains(relation.RelatedTransaction.Structure.Root.AssociatedTable)) { string tabId = MakeTabUniqueId(fatherLvl, relation, tabsNode); AddSuborTabTransaction(tabsNode, tabId, relation); } } }
private void AddSuborTabTransaction(ViewElement viewElement, string tabId, TransactionLevelRelation relation) { // Do not include the attributes "known due to context" (for example, when browsing the client's invoices, drop ClientId, ClientName, and ClientAddress). BaseCollection<TransactionAttribute> attrisInTab = new BaseCollection<TransactionAttribute>(relation.RelatedTransaction.Structure.Root.Attributes); attrisInTab.RemoveAll(delegate(TransactionAttribute trnAtt) { return relation.ContainsRelatedAttribute(trnAtt.Attribute); }); // This may leave us with nothing to add, actually... if (attrisInTab.Count > 0) { TabElement tabElement = viewElement.AddTab(tabId); tabElement.Name = (relation.GroupRelation != null ? relation.GroupRelation.Description : relation.RelatedTransaction.Description); tabElement.Wcname = relation.BaseTransaction.Name + tabId + "WC"; tabElement.Description = (relation.GroupRelation != null ? relation.GroupRelation.Description : relation.RelatedTransaction.Description); tabElement.Type = TabElement.TypeValue.Grid; tabElement.Page = TabElement.PageValue.Default; // If the attribute names in the subordinated tab differ from those in the view, they // must be explicitly listed (for "trn level subordination", they are known to be equal). bool hasDifferentAttris = false; IList<Gx.Attribute> paramAttris = new List<Gx.Attribute>(); foreach (AttributeRelation subordAttr in relation.KeyAttributes) { paramAttris.Add(subordAttr.Related); hasDifferentAttris = hasDifferentAttris || (subordAttr.Base != subordAttr.Related); } if (hasDifferentAttris) { foreach (Gx.Attribute paramAttri in paramAttris) AddParameter(tabElement.Parameters, paramAttri.Name, true); } AddTrn(relation.RelatedTransaction, tabElement); AddGridTabAttributes(tabElement, relation.RelatedTransaction, relation.RelatedTransaction.Structure.Root, attrisInTab); tabElement.Modes = new ModesElement(); tabElement.Modes.InsertCondition = viewElement.Instance.Settings.StandardActions.Insert.Condition; tabElement.Modes.UpdateCondition = viewElement.Instance.Settings.StandardActions.Update.Condition; tabElement.Modes.DeleteCondition = viewElement.Instance.Settings.StandardActions.Delete.Condition; tabElement.Modes.DisplayCondition = viewElement.Instance.Settings.StandardActions.Display.Condition; tabElement.Modes.ExportCondition = viewElement.Instance.Settings.StandardActions.Export.Condition; } }
private void AddParameters(ViewElement viewElement, bool addMode, IList<TransactionAttribute> attris) { AddParameters(viewElement.Parameters, addMode, attris, new List<TransactionAttribute>()); }
private void AddParallelTabs(ViewElement viewElement, Transaction trn, TransactionLevel level) { foreach (Transaction parallel in level.AssociatedTable.AssociatedTransactions) { if (!parallel.Equals(trn)) { TabElement tabElement = viewElement.AddTab(parallel.Name); tabElement.Name = parallel.Description; tabElement.Wcname = trn.Name + parallel.Name; tabElement.Type = TabElement.TypeValue.Tabular; AddTrn(parallel, tabElement); AddTabularTabAttributes(tabElement, parallel, parallel.Structure.Root); AddActions(tabElement); } } }
private string MakeTabUniqueId(TransactionLevel level, TransactionLevelRelation subord, ViewElement viewElement) { // If a table is subordinated to the level's base table more than once, then it is indexed // (i.e. "Client1", "Client2", "Client3"). Otherwise the table name is used ("Client"). int currentIndex = 0; bool addedIndex = false; string tabCode = subord.RelatedLevel.Name; while (viewElement.FindTab(tabCode) != null) { if (addedIndex) { // Remove this index to try with next one. Debug.Assert(tabCode.EndsWith(currentIndex.ToString())); tabCode = tabCode.Substring(0, subord.RelatedLevel.Name.Length); } currentIndex++; tabCode = tabCode + currentIndex.ToString(); addedIndex = true; } return tabCode; }
private void AddTabularTab(ViewElement viewElement, Transaction trn, TransactionLevel level, string lvlName, string wcDescription, bool needActions) { string code = "General"; TabElement tabElement = viewElement.AddTab(code); tabElement.Name = viewElement.Instance.Settings.Labels.GeneralTab; tabElement.Wcname = lvlName + "General"; tabElement.Description = wcDescription + " Info"; tabElement.Type = TabElement.TypeValue.Tabular; AddTabularTabAttributes(tabElement, trn, level); if (needActions) AddActions(tabElement); }
private void AddTabs(Transaction trn, ViewElement viewNode, string lvlName, string lvlDescription, TransactionLevel level, bool needActions) { // General tab AddTabularTab(viewNode, trn, level, lvlName, lvlDescription, needActions); //viewNode.Instance.Settings.Template.TitleImage // Tabs for parallel transactions. if (viewNode.Instance.Settings.Template.TabsForParallelTransactions) { if (trn.Structure.Root == level && level.AssociatedTable.AssociatedTransactions.Count > 1) AddParallelTabs(viewNode, trn, level); } // Tabs for subordinations. AddSuborTabs(viewNode, trn, level); }