Пример #1
0
 void CreateDesigner(SampleDesignerLoader loader)
 {
     this.host = new SampleDesignerHost.SampleDesignerHost(this.hostingServiceContainer);
     this.propertyGrid.Site = new SampleDesignerApplication.PropertyGridSite(this.host, this);
     this.propertyGrid.PropertyTabs.AddTabType(typeof(System.Windows.Forms.Design.EventsTab));
     this.host.LoadDocument(loader);
     this.loader = loader;
     this.ToolboxPane1.Host = this.host;
     this.host.View.Dock = DockStyle.Fill;
     this.host.View.Visible = true;
     this.panelMain.Controls.Add(this.host.View);
     this.filter = new KeystrokeMessageFilter(this.host);
     Application.AddMessageFilter(this.filter);
     this.host.SelectionChanged += new EventHandler(host_SelectionChanged);
 }
Пример #2
0
        /// This method is called whenever we create a new designer or
        /// load one from existing XML.
        private void CreateDesigner(SampleDesignerLoader loader)
        {
            // Our loader will handle loading the file (or creating a blank one).
            host = new SampleDesignerHost.SampleDesignerHost(hostingServiceContainer);

            // The limited events tab functionality we have requires a special kind of
            // property grid site.
            //
            propertyGrid.Site = new PropertyGridSite(host as IServiceProvider, this);
            propertyGrid.PropertyTabs.AddTabType(typeof(EventsTab));

            host.LoadDocument(loader);
            this.loader = loader;

            // The toolbox needs access to the IToolboxService and the designers.
            toolbox.Host = host;

            // Initialize our document window.
            host.View.Dock = DockStyle.Fill;
            host.View.Visible = true;
            panelMain.Controls.Add(host.View);

            // These are normally unavailable if we've got no host created.
            // Otherwise we gets lots of null reference exceptions.
            //
            //tabControl.Visible = true;
            //menuItemSave.Enabled = true;
            //menuItemSaveAs.Enabled = true;
            //menuItemEdit.Enabled = true;
            //menuItemView.Enabled = true;
            //menuItemLayout.Enabled = true;
            //menuItemDebug.Enabled = true;

            // This IMessageFilter is used to intercept and decipher keyboard presses
            // that might be instructions for our designer. We have to do it this way
            // since we can't have our designer raise KeyPress events.
            //
            filter = new KeystrokeMessageFilter(host);
            Application.AddMessageFilter(filter);
        }
Пример #3
0
 internal SampleDesignerSerializationManager(SampleDesignerLoader loader)
 {
     this._loader = loader;
 }
		///     Initializes the serialization manager.
		internal SampleDesignerSerializationManager(SampleDesignerLoader loader) 
		{
			_loader = loader;
		}
Пример #5
0
 private void menuItemOpen_Click(object sender, EventArgs e)
 {
     if (this.DestroyDesigner() && (this.openFileDialog.ShowDialog(this) == DialogResult.OK))
     {
         SampleDesignerLoader designerLoader = new SampleDesignerLoader(this.openFileDialog.FileName);
         this.CreateDesigner(designerLoader);
     }
 }
Пример #6
0
 private void menuItemNew_Click(object sender, EventArgs e)
 {
     if (this.DestroyDesigner())
     {
         SampleDesignerLoader designerLoader = new SampleDesignerLoader();
         this.CreateDesigner(designerLoader);
     }
 }
Пример #7
0
 private bool DestroyDesigner()
 {
     if (this.loader != null)
     {
         if (this.loader.PromptDispose())
         {
             this.tabControl.Visible = false;
             this.menuItemSave.Enabled = false;
             this.menuItemSaveAs.Enabled = false;
             this.menuItemEdit.Enabled = false;
             this.menuItemView.Enabled = false;
             this.menuItemLayout.Enabled = false;
             this.menuItemDebug.Enabled = false;
             this.panelMain.Controls.Clear();
             Application.RemoveMessageFilter(this.filter);
             this.filter = null;
             this.propertyGrid.Site = null;
             this.host.Dispose();
             this.loader = null;
             this.host = null;
             return true;
         }
         return false;
     }
     return true;
 }
Пример #8
0
 private void CreateDesigner(SampleDesignerLoader loader)
 {
     this.host = new SampleDesignerHost(this.hostingServiceContainer);
     this.propertyGrid.Site = new SampleDesignerApplication.PropertyGridSite(this.host, this);
     this.propertyGrid.PropertyTabs.AddTabType(typeof(EventsTab));
     this.host.LoadDocument(loader);
     this.loader = loader;
     this.toolbox.Host = this.host;
     this.host.View.Dock = DockStyle.Fill;
     this.host.View.Visible = true;
     this.panelMain.Controls.Add(this.host.View);
     this.tabControl.Visible = true;
     this.menuItemSave.Enabled = true;
     this.menuItemSaveAs.Enabled = true;
     this.menuItemEdit.Enabled = true;
     this.menuItemView.Enabled = true;
     this.menuItemLayout.Enabled = true;
     this.menuItemDebug.Enabled = true;
     this.filter = new KeystrokeMessageFilter(this.host);
     Application.AddMessageFilter(this.filter);
     this.host.SelectionChanged += new EventHandler(host_SelectionChanged);
 }
Пример #9
0
		private void menuItemOpen_Click(object sender, System.EventArgs e)
		{
			if (DestroyDesigner()) // make sure we're clear for a new designer
			{
				if (openFileDialog.ShowDialog(this) == DialogResult.OK)
				{
					// Load up this file (XML is all we support for now).
					SampleDesignerLoader designerLoader = new SampleDesignerLoader(openFileDialog.FileName);
					CreateDesigner(designerLoader);
				}
			}
		}
Пример #10
0
        //[System.STAThreadAttribute()]
        //public static void Main()
        //{
        //    System.Windows.Forms.Application.Run(new MainForm());
        //}

		private void menuItemNew_Click(object sender, System.EventArgs e)
		{
            if (DestroyDesigner()) // make sure we're clear for a new designer
            {
				// A loader created with no parameters creates a blank document.
                SampleDesignerLoader designerLoader = new SampleDesignerLoader();
                CreateDesigner(designerLoader);
            }
		}
Пример #11
0
		/// This is called to destroy our designer (when we load a new one for example).
		/// It returns true if our environment has been cleared, false if not (if someone
		/// cancels a dispose when prompted to save changes).
        private bool DestroyDesigner() 
        {
            if (loader != null) 
            {
                if (loader.PromptDispose())
                {
					// Again, bad things happen if there's no host loaded and 
					// certain buttons are pressed in our TabControl or MainMenu.
					//
					tabControl.Visible = false;
                    menuItemSave.Enabled = false;
					menuItemSaveAs.Enabled = false;
					menuItemEdit.Enabled = false;
					menuItemView.Enabled = false;
					menuItemLayout.Enabled = false;
					menuItemDebug.Enabled = false;

					// Get rid of our document window.
                    panelMain.Controls.Clear();

					// No need to filter for designer-intended keyboard strokes now.
					Application.RemoveMessageFilter(filter);
					filter = null;

					// Get rid of that property grid site so it doesn't ask for
					// any more services from our soon-to-be-disposed host.
					//
					propertyGrid.Site = null;

                    host.Dispose();
                    loader = null;
                    host = null;
                    return true;
                }
                return false;
            }
            return true;
        }
Пример #12
0
 public void CreateFromXML(string file_name)
 {
     if (DestroyDesigner()) // make sure we're clear for a new designer
     {
         SampleDesignerLoader designerLoader = new SampleDesignerLoader(file_name);
         CreateDesigner(designerLoader);
         designerLoader.dirty = false;
     }
 }
Пример #13
0
 public void CreateNew()
 {
     if (DestroyDesigner()) // make sure we're clear for a new designer
     {
         // A loader created with no parameters creates a blank document.
         SampleDesignerLoader designerLoader = new SampleDesignerLoader();
         CreateDesigner(designerLoader);
     }
 }
Пример #14
0
 private bool DestroyDesigner()
 {
     if (this.loader != null)
     {
         if (this.loader.PromptDispose())
         {
             Application.RemoveMessageFilter(this.filter);
             this.filter = null;
             this.propertyGrid.Site = null;
             this.host.Dispose();
             this.loader = null;
             this.host = null;
             return true;
         }
         return false;
     }
     return true;
 }
Пример #15
0
 private void ÖffnenToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (this.DestroyDesigner() && (this.OpenFileDialog1.ShowDialog(this) == DialogResult.OK))
     {
         SampleDesignerLoader designerLoader = new SampleDesignerLoader(this.OpenFileDialog1.FileName);
         this.CreateDesigner(designerLoader);
     }
 }
Пример #16
0
 private void Form1_Load(object sender, EventArgs e)
 {
     hostingServiceContainer = new ServiceContainer();
     this.hostingServiceContainer = new ServiceContainer();
     this.hostingServiceContainer.AddService(typeof(PropertyGrid), this.propertyGrid);
     this.hostingServiceContainer.AddService(typeof(ToolboxPane), this.ToolboxPane1);
     SampleDesignerLoader designerLoader = new SampleDesignerLoader("template.xdx");
     CreateDesigner(designerLoader);
     designerLoader.dirty = false;
     designerLoader.unsaved = false;
     mcs = ((IServiceProvider)this.host).GetService(typeof(IMenuCommandService)) as IMenuCommandService;
 }