コード例 #1
0
        /// <summary>
        /// Adds a new element to the currently active template.
        /// </summary>
        /// <param name="parameter"></param>
        private void AddElement(object parameter)
        {
            if (ActiveTemplate == null)
            {
                return;
            }
            string name = parameter as string;

            BaseElement element = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(name) as BaseElement;

            if (element != null)
            {
                element.XPos           = TemplateMousePosition.X - (element.Width / 2);
                element.YPos           = TemplateMousePosition.Y - (element.Height / 2);
                element.RefreshLayout += new RefreshLayoutEvent(OnRefreshLayout);
                ActiveTemplate.AddElement(element);
                SelectedElement = element;
                RestoreLayoutView(ActiveTemplate);

                if (element.LastLayoutInstance != null)
                {
                    SelectedDecorator = element.LastLayoutInstance as IDesignItemDecorator;
                    ((ElementUserControl)element.LastLayoutInstance).CanManipulate = true;
                    ((ElementUserControl)element.LastLayoutInstance).ShowDecorator = true;
                }
            }
            else
            {
                MessageBox.Show("There was an error while creating a template of the type '" + parameter + "'.");
            }
        }
コード例 #2
0
        /// <summary>
        /// Constructor
        /// </summary>
        public HtmlComponentControl(IApplicationComponent component, ActiveTemplate template)
        {
            InitializeComponent();

            _component = component;
            _template  = template;
#if DEBUG
            _webBrowser.IsWebBrowserContextMenuEnabled = true;
#else
            _webBrowser.IsWebBrowserContextMenuEnabled = false;
#endif

            _component.AllPropertiesChanged += AllPropertiesChangedEventHandler;
            this.Disposed += new EventHandler(DisposedEventHandler);
            ReloadPage();
        }
コード例 #3
0
            public void WriteHtml(TextWriter writer)
            {
                try
                {
                    var request  = WebRequest.Create(TemplateUrl);
                    var response = (HttpWebResponse)request.GetResponse();
                    using (var s = response.GetResponseStream())
                    {
                        // doubt that GetResponseStream ever returns null, but just in case
                        if (s == null)
                        {
                            _job.SetError("No response stream available.");
                            return;
                        }

                        using (var reader = new StreamReader(s, GetEncoding(response.CharacterSet)))
                        {
                            var template = new ActiveTemplate(reader);
                            var html     = template.Evaluate(_variables);
                            writer.Write(html);
                        }
                    }
                }
                catch (WebException e)
                {
                    // explicitly handle 404 to provide a helpful error message
                    if (e.Status == WebExceptionStatus.ProtocolError && ((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.NotFound)
                    {
                        _job.SetError(string.Format("The template {0} was not found (404).", TemplateUrl));
                    }
                    else
                    {
                        _job.SetError(e.Message);
                    }
                    throw;
                }
                catch (Exception e)
                {
                    _job.SetError(e.Message);
                    throw;
                }
            }