Inheritance: IContainer, IComponentChangeService
Exemplo n.º 1
0
		public DesignerHost (ServiceContainer parentServices, EditorHost host)
		{
			this.parentServices = parentServices;
			container = new DesignContainer (this);

			//register services
			parentServices.AddService (typeof (IDesignerHost), this);
			parentServices.AddService (typeof (IComponentChangeService), container);

			editorHost = host;
		}
Exemplo n.º 2
0
		public DesignerHost (ServiceContainer parentServices)
		{
			this.parentServices = parentServices;
			container = new DesignContainer (this);
			referenceManager = new WebFormReferenceManager (this);

			//register services
			parentServices.AddService (typeof (IDesignerHost), this);
			parentServices.AddService (typeof (IComponentChangeService), container);
			parentServices.AddService (typeof (IWebFormReferenceManager), referenceManager);		
		}
Exemplo n.º 3
0
        public DesignerHost(ServiceContainer parentServices, EditorHost host)
        {
            this.parentServices = parentServices;
            container           = new DesignContainer(this);

            //register services
            parentServices.AddService(typeof(IDesignerHost), this);
            parentServices.AddService(typeof(IComponentChangeService), container);

            editorHost = host;
        }
Exemplo n.º 4
0
        public DesignerHost(ServiceContainer parentServices)
        {
            this.parentServices = parentServices;
            container           = new DesignContainer(this);
            referenceManager    = new WebFormReferenceManager(this);

            //register services
            parentServices.AddService(typeof(IDesignerHost), this);
            parentServices.AddService(typeof(IComponentChangeService), container);
            parentServices.AddService(typeof(IWebFormReferenceManager), referenceManager);
        }
Exemplo n.º 5
0
			public DesignSite (IComponent component, DesignContainer container)
			{
				this.container = container;
				this.component = component;
			}
Exemplo n.º 6
0
 public DesignSite(IComponent component, DesignContainer container)
 {
     this.container = container;
     this.component = component;
 }
Exemplo n.º 7
0
        ///<summary>Converts a designer document fragment to ASP.NET code</summary>
        public string Serialize(string designerDocumentFragment)
        {
            if (host == null)
            {
                throw new Exception("The document cannot be persisted without a host");
            }

            string       serializedDoc = string.Empty;
            StringWriter writer        = new StringWriter();

            //keep method argument meaningfully named, but keep code readable!
            string frag   = designerDocumentFragment;
            int    length = frag.Length;

            int   pos  = 0;
            SMode mode = SMode.Free;

            while (pos < length)
            {
                char c = frag [pos];

                switch (mode)
                {
                //it's freely copying to output, but watching for a directive or control placeholder
                case SMode.Free:
                    if (c == '<')
                    {
                        if ((pos + 10 < length) && frag.Substring(pos + 1, 10) == "aspcontrol")
                        {
                            mode = SMode.ControlId;
                            pos += 10;
                            break;
                        }
                        else if ((pos + 20 < length) && frag.Substring(pos + 1, 20) == "directiveplaceholder")
                        {
                            mode = SMode.DirectiveId;
                            pos += 20;
                            break;
                        }
                    }

                    writer.Write(c);
                    break;

                //it's found a directive placeholder and is scanning for the ID
                case SMode.DirectiveId:
                    if (c == 'i' && (pos + 4 < length) && frag.Substring(pos, 4) == "id=\"")
                    {
                        int idEnd = frag.IndexOf('"', pos + 4 + 1);
                        if (idEnd == -1)
                        {
                            throw new Exception("Identifier was unterminated");
                        }
                        int id = Int32.Parse(frag.Substring(pos + 4, (idEnd - pos - 4)));

                        //TODO: more intelligent removal/copying of directives in case of fragments
                        //works fine with whole document.
                        string directive = RemoveDirective(id);
                        writer.Write(directive);

                        mode = SMode.DirectiveEnd;
                        pos  = idEnd;
                    }
                    break;

                //it's found a control placeholder and is scanning for the ID
                case SMode.ControlId:
                    if (c == 'i' && (pos + 4 < length) && frag.Substring(pos, 4) == "id=\"")
                    {
                        int idEnd = frag.IndexOf("\"", pos + 4);
                        if (idEnd == -1)
                        {
                            throw new Exception("Identifier was unterminated");
                        }
                        string id = frag.Substring(pos + 4, (idEnd - pos - 4));

                        DesignContainer dc      = (DesignContainer)host.Container;
                        Control         control = dc.GetComponent(id) as Control;
                        if (control == null)
                        {
                            throw new Exception("Could not retrieve control " + id);
                        }
                        ControlPersister.PersistControl(writer, control);

                        mode = SMode.ControlEnd;
                        pos  = idEnd;
                    }
                    break;

                //it's found the control's ID and is looking for the end
                case SMode.ControlEnd:
                    if (c == '<' && (pos + 13 < length) && frag.Substring(pos, 13) == "</aspcontrol>")
                    {
                        pos += 12;
                        mode = SMode.Free;
                    }
                    break;

                //it's found the placeholder's ID and is looking for the end
                case SMode.DirectiveEnd:
                    if (c == '/' && (pos + 2 < length) && frag.Substring(pos, 2) == "/>")
                    {
                        pos += 1;
                        mode = SMode.Free;
                    }
                    break;
                }

                pos++;
            }

            serializedDoc = writer.ToString();
            writer.Close();

            return(serializedDoc);
        }