/// <summary> /// Registers the new supplied model class collection definitor. /// </summary> public void DeclareCollection(MModelCollectionDefinitor CollectionDefinitor) { if (this.Collections_.ContainsKey(CollectionDefinitor.TechName)) { throw new UsageAnomaly("Collection definitor is already registered for the model class.", CollectionDefinitor); } // Attach this declarator to its owner/class, and for generate qualified-names, plus maybe assemble interceptors. CollectionDefinitor.AssignDeclarator(this); // Register property this.Collections_.Add(CollectionDefinitor.TechName, CollectionDefinitor); MModelClassDefinitor.DeclaredMemberDefinitors_.Add(CollectionDefinitor.QualifiedTechName, CollectionDefinitor); }
public void Initialize(Domain BaseDomain, string DefaultLanguageTechName, Type IdeaSourceType, IModelEntity SourceEntity, MModelCollectionDefinitor TemplatesCollectionDef, MModelCollectionDefinitor BaseTemplatesCollectionDef, bool ShowWindowButtons = false, params Tuple <string, ImageSource, string, Action <string> >[] TextEditorExtraButtons) { this.BaseDomain = BaseDomain; this.IdeaSourceType = IdeaSourceType; this.SourceEntity = SourceEntity; this.TemplatesCollectionDef = TemplatesCollectionDef; this.BaseTemplatesCollectionDef = BaseTemplatesCollectionDef; this.WorkingTemplatesCollection = this.TemplatesCollectionDef.Read(this.SourceEntity) as IList <TextTemplate>; this.CbxLanguage.ItemsSource = this.BaseDomain.ExternalLanguages; this.CbxLanguage.SelectionChanged += ((sdr, args) => this.TemplateLanguageSelection(args.AddedItems[0] as ExternalLanguageDeclaration)); if (this.BaseTemplatesCollectionDef != null) { this.ChbExtendsBaseTemplate.Content = TextTemplate.__ExtendsBaseTemplate.Name; this.ChbExtendsBaseTemplate.ToolTip = TextTemplate.__ExtendsBaseTemplate.Summary; } else { this.BtnEditBaseTemplate.SetVisible(false); this.ChbExtendsBaseTemplate.SetVisible(false); } /*- Action BaseTemplateExtensionChange = * () => * { * var Editor = this; // Notice the indirect reference, due to CurrentTemplate change depending on Language * Editor.CurrentTemplate.ExtendsBaseTemplate = Editor.ChbExtendsBaseTemplate.IsChecked.IsTrue(); * }; * * this.ChbExtendsBaseTemplate.Checked += ((sdr, args) => BaseTemplateExtensionChange()); * this.ChbExtendsBaseTemplate.Unchecked += ((sdr, args) => BaseTemplateExtensionChange()); */ this.SteSyntaxEditor.Initialize(this.EditEngine, this.SourceEntity.ToString(), this.TemplatesCollectionDef.TechName, this.TemplatesCollectionDef.Name, () => this.CurrentTemplate.Text, (text) => this.CurrentTemplate.Text = text, ShowWindowButtons, TextEditorExtraButtons); this.SteSyntaxEditor.SyntaxName = "Template"; this.SteSyntaxEditor.SyntaxFileExtension = "." + Domain.TEMPLATE_FILE_EXT; this.PostCall(ted => ted.CbxLanguage.SelectedItem = ted.BaseDomain.CurrentExternalLanguage); }