예제 #1
0
        private void ApplyEventsTheme(IEventRenderer theme)
        {
            if (null == theme)
            {
                return;
            }

            m_editorForm.Editor.CurrentEventsTheme = theme;
            //this.ThemeDropDownButton.Text = theme.GetName();
            m_notes.ApplyTheme(theme);
        }
예제 #2
0
        public void ApplyTheme(IEventRenderer theme)
        {
            if (null == theme)
            {
                return;
            }

            m_notes.Clear();

            foreach (var keyvalue in theme.GetTemplates())
            {
                m_notes.Add(this.CreateNoteFromEventData(
                                keyvalue.Key,
                                keyvalue.Value
                                ));
            }

            AvailableNotesList.DataSource = m_notes;
        }
예제 #3
0
        public void Render(Project project, ProjectItem <EventSourceModel> model)
        {
            var eventSourceModel = model.Content;

            if (eventSourceModel == null)
            {
                LogError($"{model.Name} should have a content of type {typeof(EventSourceModel).Name} set but found {model.Content?.GetType().Name ?? "null"}");
                return;
            }

            var output = EventSourceTemplate.Template_EVENTSOURCE_CLASS_DECLARATION;

            output = output.Replace(EventSourceTemplate.Variable_SOURCE_FILE_NAME, eventSourceModel.SourceFilePath);
            output = output.Replace(EventSourceTemplate.Variable_EVENTSOURCE_NAME, eventSourceModel.ProviderName);
            output = output.Replace(EventSourceTemplate.Variable_EVENTSOURCE_CLASS_NAME, eventSourceModel.ClassName);
            output = output.Replace(EventSourceTemplate.Variable_NAMESPACE_DECLARATION, eventSourceModel.Namespace);

            // Render all events
            var events         = new StringBuilder();
            var eventRenderers = new IEventRenderer[]
            {
                new EventSourceEventMethodRenderer(),
                new EventSourceNonEventMethodRenderer(),
                new LoggerEventSourcePartialEventMethodRenderer(),
            }.Union(project.GetExtensions <IEventRenderer>()).ToArray();

            foreach (var eventSourceEvent in eventSourceModel?.Events ?? new EventModel[0])
            {
                foreach (var renderer in eventRenderers.Union(project.GetExtensions <IEventRenderer>()))
                {
                    events.AppendLine(renderer.Render(project, eventSourceModel, eventSourceEvent));
                }
            }
            output = output.Replace(EventSourceTemplate.Variable_EVENTS_DECLARATION, events.ToString());


            // Render all keywords
            var keywords          = new StringBuilder();
            var keywordsRenderers = new IKeywordRenderer[]
            {
                new EventSourceKeywordRenderer(),
            }.Union(project.GetExtensions <IKeywordRenderer>()).ToArray();

            foreach (var keyword in eventSourceModel.Keywords ?? new KeywordModel[0])
            {
                foreach (var renderer in keywordsRenderers.Union(project.GetExtensions <IKeywordRenderer>()))
                {
                    keywords.AppendLine(renderer.Render(project, eventSourceModel, keyword));
                }
            }
            output = output.Replace(EventSourceTemplate.Variable_KEYWORDS_DECLARATION, keywords.ToString());


            // Render extensions
            if (eventSourceModel.Extensions != null && eventSourceModel.Extensions.Any())
            {
                var extensions         = new StringBuilder();
                var extensionRenderers = new IExtensionsMethodRenderer[]
                {
                    new EventSourceExtensionMethodRenderer(),
                }.Union(project.GetExtensions <IExtensionsMethodRenderer>()).ToArray();
                foreach (var extension in eventSourceModel.Extensions)
                {
                    foreach (var renderer in extensionRenderers.Union(project.GetExtensions <IExtensionsMethodRenderer>()))
                    {
                        extensions.AppendLine(renderer.Render(project, eventSourceModel, extension));
                    }
                }

                var extensionMethod = EventSourceTemplate.Template_EXTENSIONS_DECLARATION;
                extensionMethod = extensionMethod.Replace(EventSourceTemplate.Variable_EVENTSOURCE_CLASS_NAME, eventSourceModel.ClassName);
                extensionMethod = extensionMethod.Replace(EventSourceTemplate.Variable_EXTENSION_METHODS_DECLARATION, extensions.ToString());

                output = output.Replace(EventSourceTemplate.Variable_EXTENSIONS_DECLARATION, extensionMethod);
            }
            else
            {
                output = output.Replace(EventSourceTemplate.Variable_EXTENSIONS_DECLARATION, "");
            }

            model.Output = output;
        }
예제 #4
0
 public void Add(IEventRenderer renderer)
 {
     mRenderers.Add(renderer);
 }