Click here to Skip to main content
15,886,026 members
Articles / Programming Languages / C#

Universal Framework for Science and Engineering - Part 4: Space elevator

Rate me:
Please Sign up or sign in to vote.
4.56/5 (6 votes)
14 Aug 20066 min read 36.6K   2.2K   37  
An article on framework applications to the space elevator.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

using CategoryTheory;
using ResourceService;

namespace DiagramUI
{
	/// <summary>
	/// Summary description for FormContainerDesigner.
	/// </summary>
	public class FormContainerDesigner : System.Windows.Forms.Form
    {
        private IContainer components;
		private System.Windows.Forms.Panel panelLeft;
		private System.Windows.Forms.Panel panelRight;
		private System.Windows.Forms.Panel panelTop;
		private System.Windows.Forms.Panel panelBottom;
		private System.Windows.Forms.Panel panelCenter;
		private System.Windows.Forms.Panel panelLabel;
		private System.Windows.Forms.Panel panelIntTop;
		private System.Windows.Forms.Panel panelIntBottom;
		private System.Windows.Forms.Panel panelIntLeft;
		private System.Windows.Forms.Panel panelBaseCheck;
		private System.Windows.Forms.CheckedListBox checkedListBoxInter;
		private System.Windows.Forms.ComboBox comboBoxInter;
		private System.Windows.Forms.Button buttonAcceptInterfaces;
		private System.Windows.Forms.Label label1;
		private System.Windows.Forms.Panel panelDrawing;
		private System.Windows.Forms.TextBox textBoxComment;
		private System.Windows.Forms.Label label2;
		private System.Windows.Forms.Panel panelLabelPeer;
		private IDesktop desktop;
		private ArrayList comp;
		private ArrayList selected = new ArrayList();
		private System.Windows.Forms.MainMenu mainMenuDesigner;
		private System.Windows.Forms.MenuItem menuItemFile;
		private System.Windows.Forms.MenuItem menuItemOpen;
		private System.Windows.Forms.MenuItem menuItemSaveAs;
		private System.Windows.Forms.MenuItem menuItemSeparator;
		private System.Windows.Forms.SaveFileDialog saveFileDialogContainer;
        private ToolStrip toolStripMain;
        private ToolStripButton openToolStripButton;
        private ToolStripButton toolStripButtonLoadFromDatabase;
        private ToolStripButton saveToolStripButton;
        private ToolStripButton toolStripButtonClear;
        private ToolStripButton toolStripButtonRefresh;
        private ToolStripButton toolStripButtonToolBox;
        private ToolStripButton toolStripButtonFont;
        private MenuItem menuItem1;
        private MenuItem menuItem2;
        private MenuItem menuItem3;
		private Hashtable table = new Hashtable();


		private FormContainerDesigner()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();


			//
			// TODO: Add any constructor code after InitializeComponent call
			//
		}

		public FormContainerDesigner(IDesktop desktop) : this()
		{
			Resources.LoadControlResources(this);
			this.desktop = desktop;
			comp = new ArrayList(PureDesktopPeer.GetAllObjects(desktop));
			foreach (INamedComponent nc in comp)
			{
				checkedListBoxInter.Items.Add(nc.GetName(desktop));
			}
		}


		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if(components != null)
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormContainerDesigner));
            this.panelLeft = new System.Windows.Forms.Panel();
            this.panelRight = new System.Windows.Forms.Panel();
            this.panelTop = new System.Windows.Forms.Panel();
            this.panelBottom = new System.Windows.Forms.Panel();
            this.panelCenter = new System.Windows.Forms.Panel();
            this.panelBaseCheck = new System.Windows.Forms.Panel();
            this.checkedListBoxInter = new System.Windows.Forms.CheckedListBox();
            this.panelIntLeft = new System.Windows.Forms.Panel();
            this.panelIntBottom = new System.Windows.Forms.Panel();
            this.buttonAcceptInterfaces = new System.Windows.Forms.Button();
            this.panelIntTop = new System.Windows.Forms.Panel();
            this.label1 = new System.Windows.Forms.Label();
            this.panelLabel = new System.Windows.Forms.Panel();
            this.label2 = new System.Windows.Forms.Label();
            this.textBoxComment = new System.Windows.Forms.TextBox();
            this.panelDrawing = new System.Windows.Forms.Panel();
            this.panelLabelPeer = new System.Windows.Forms.Panel();
            this.comboBoxInter = new System.Windows.Forms.ComboBox();
            this.mainMenuDesigner = new System.Windows.Forms.MainMenu(this.components);
            this.menuItemFile = new System.Windows.Forms.MenuItem();
            this.menuItemOpen = new System.Windows.Forms.MenuItem();
            this.menuItemSeparator = new System.Windows.Forms.MenuItem();
            this.menuItemSaveAs = new System.Windows.Forms.MenuItem();
            this.saveFileDialogContainer = new System.Windows.Forms.SaveFileDialog();
            this.toolStripMain = new System.Windows.Forms.ToolStrip();
            this.openToolStripButton = new System.Windows.Forms.ToolStripButton();
            this.toolStripButtonLoadFromDatabase = new System.Windows.Forms.ToolStripButton();
            this.saveToolStripButton = new System.Windows.Forms.ToolStripButton();
            this.toolStripButtonClear = new System.Windows.Forms.ToolStripButton();
            this.toolStripButtonRefresh = new System.Windows.Forms.ToolStripButton();
            this.toolStripButtonToolBox = new System.Windows.Forms.ToolStripButton();
            this.toolStripButtonFont = new System.Windows.Forms.ToolStripButton();
            this.menuItem1 = new System.Windows.Forms.MenuItem();
            this.menuItem2 = new System.Windows.Forms.MenuItem();
            this.menuItem3 = new System.Windows.Forms.MenuItem();
            this.panelTop.SuspendLayout();
            this.panelCenter.SuspendLayout();
            this.panelBaseCheck.SuspendLayout();
            this.panelIntBottom.SuspendLayout();
            this.panelIntTop.SuspendLayout();
            this.panelLabel.SuspendLayout();
            this.panelDrawing.SuspendLayout();
            this.toolStripMain.SuspendLayout();
            this.SuspendLayout();
            // 
            // panelLeft
            // 
            this.panelLeft.Dock = System.Windows.Forms.DockStyle.Left;
            this.panelLeft.Location = new System.Drawing.Point(0, 0);
            this.panelLeft.Name = "panelLeft";
            this.panelLeft.Size = new System.Drawing.Size(8, 429);
            this.panelLeft.TabIndex = 0;
            // 
            // panelRight
            // 
            this.panelRight.Dock = System.Windows.Forms.DockStyle.Right;
            this.panelRight.Location = new System.Drawing.Point(752, 0);
            this.panelRight.Name = "panelRight";
            this.panelRight.Size = new System.Drawing.Size(8, 429);
            this.panelRight.TabIndex = 1;
            // 
            // panelTop
            // 
            this.panelTop.Controls.Add(this.toolStripMain);
            this.panelTop.Dock = System.Windows.Forms.DockStyle.Top;
            this.panelTop.Location = new System.Drawing.Point(8, 0);
            this.panelTop.Name = "panelTop";
            this.panelTop.Size = new System.Drawing.Size(744, 48);
            this.panelTop.TabIndex = 2;
            // 
            // panelBottom
            // 
            this.panelBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
            this.panelBottom.Location = new System.Drawing.Point(8, 421);
            this.panelBottom.Name = "panelBottom";
            this.panelBottom.Size = new System.Drawing.Size(744, 8);
            this.panelBottom.TabIndex = 3;
            // 
            // panelCenter
            // 
            this.panelCenter.Controls.Add(this.panelBaseCheck);
            this.panelCenter.Controls.Add(this.panelIntLeft);
            this.panelCenter.Controls.Add(this.panelIntBottom);
            this.panelCenter.Controls.Add(this.panelIntTop);
            this.panelCenter.Controls.Add(this.panelLabel);
            this.panelCenter.Dock = System.Windows.Forms.DockStyle.Fill;
            this.panelCenter.Location = new System.Drawing.Point(8, 48);
            this.panelCenter.Name = "panelCenter";
            this.panelCenter.Size = new System.Drawing.Size(744, 373);
            this.panelCenter.TabIndex = 4;
            // 
            // panelBaseCheck
            // 
            this.panelBaseCheck.Controls.Add(this.checkedListBoxInter);
            this.panelBaseCheck.Dock = System.Windows.Forms.DockStyle.Fill;
            this.panelBaseCheck.Location = new System.Drawing.Point(8, 40);
            this.panelBaseCheck.Name = "panelBaseCheck";
            this.panelBaseCheck.Size = new System.Drawing.Size(456, 293);
            this.panelBaseCheck.TabIndex = 4;
            // 
            // checkedListBoxInter
            // 
            this.checkedListBoxInter.Dock = System.Windows.Forms.DockStyle.Fill;
            this.checkedListBoxInter.Location = new System.Drawing.Point(0, 0);
            this.checkedListBoxInter.Name = "checkedListBoxInter";
            this.checkedListBoxInter.Size = new System.Drawing.Size(456, 289);
            this.checkedListBoxInter.TabIndex = 0;
            // 
            // panelIntLeft
            // 
            this.panelIntLeft.Dock = System.Windows.Forms.DockStyle.Left;
            this.panelIntLeft.Location = new System.Drawing.Point(0, 40);
            this.panelIntLeft.Name = "panelIntLeft";
            this.panelIntLeft.Size = new System.Drawing.Size(8, 293);
            this.panelIntLeft.TabIndex = 3;
            // 
            // panelIntBottom
            // 
            this.panelIntBottom.Controls.Add(this.buttonAcceptInterfaces);
            this.panelIntBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
            this.panelIntBottom.Location = new System.Drawing.Point(0, 333);
            this.panelIntBottom.Name = "panelIntBottom";
            this.panelIntBottom.Size = new System.Drawing.Size(464, 40);
            this.panelIntBottom.TabIndex = 2;
            // 
            // buttonAcceptInterfaces
            // 
            this.buttonAcceptInterfaces.Location = new System.Drawing.Point(176, 8);
            this.buttonAcceptInterfaces.Name = "buttonAcceptInterfaces";
            this.buttonAcceptInterfaces.Size = new System.Drawing.Size(75, 23);
            this.buttonAcceptInterfaces.TabIndex = 0;
            this.buttonAcceptInterfaces.Text = "Accept";
            this.buttonAcceptInterfaces.Click += new System.EventHandler(this.buttonAcceptInterfaces_Click);
            // 
            // panelIntTop
            // 
            this.panelIntTop.Controls.Add(this.label1);
            this.panelIntTop.Dock = System.Windows.Forms.DockStyle.Top;
            this.panelIntTop.Location = new System.Drawing.Point(0, 0);
            this.panelIntTop.Name = "panelIntTop";
            this.panelIntTop.Size = new System.Drawing.Size(464, 40);
            this.panelIntTop.TabIndex = 1;
            // 
            // label1
            // 
            this.label1.Location = new System.Drawing.Point(136, 8);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(184, 23);
            this.label1.TabIndex = 0;
            this.label1.Text = "Public objects";
            // 
            // panelLabel
            // 
            this.panelLabel.Controls.Add(this.label2);
            this.panelLabel.Controls.Add(this.textBoxComment);
            this.panelLabel.Controls.Add(this.panelDrawing);
            this.panelLabel.Controls.Add(this.comboBoxInter);
            this.panelLabel.Dock = System.Windows.Forms.DockStyle.Right;
            this.panelLabel.Location = new System.Drawing.Point(464, 0);
            this.panelLabel.Name = "panelLabel";
            this.panelLabel.Size = new System.Drawing.Size(280, 373);
            this.panelLabel.TabIndex = 0;
            // 
            // label2
            // 
            this.label2.Location = new System.Drawing.Point(40, 272);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(100, 23);
            this.label2.TabIndex = 3;
            this.label2.Text = "Comment";
            // 
            // textBoxComment
            // 
            this.textBoxComment.Location = new System.Drawing.Point(32, 312);
            this.textBoxComment.Name = "textBoxComment";
            this.textBoxComment.Size = new System.Drawing.Size(224, 20);
            this.textBoxComment.TabIndex = 2;
            // 
            // panelDrawing
            // 
            this.panelDrawing.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
            this.panelDrawing.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
            this.panelDrawing.Controls.Add(this.panelLabelPeer);
            this.panelDrawing.Location = new System.Drawing.Point(24, 48);
            this.panelDrawing.Name = "panelDrawing";
            this.panelDrawing.Size = new System.Drawing.Size(224, 200);
            this.panelDrawing.TabIndex = 1;
            this.panelDrawing.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelDrawing_MouseDown);
            // 
            // panelLabelPeer
            // 
            this.panelLabelPeer.BackColor = System.Drawing.SystemColors.Control;
            this.panelLabelPeer.Location = new System.Drawing.Point(56, 48);
            this.panelLabelPeer.Name = "panelLabelPeer";
            this.panelLabelPeer.Size = new System.Drawing.Size(100, 100);
            this.panelLabelPeer.TabIndex = 0;
            // 
            // comboBoxInter
            // 
            this.comboBoxInter.Location = new System.Drawing.Point(24, 16);
            this.comboBoxInter.Name = "comboBoxInter";
            this.comboBoxInter.Size = new System.Drawing.Size(224, 21);
            this.comboBoxInter.TabIndex = 0;
            this.comboBoxInter.SelectedIndexChanged += new System.EventHandler(this.comboBoxInter_SelectedIndexChanged);
            // 
            // mainMenuDesigner
            // 
            this.mainMenuDesigner.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
            this.menuItemFile});
            // 
            // menuItemFile
            // 
            this.menuItemFile.Index = 0;
            this.menuItemFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
            this.menuItemOpen,
            this.menuItemSeparator,
            this.menuItemSaveAs,
            this.menuItem1,
            this.menuItem2,
            this.menuItem3});
            this.menuItemFile.Text = "File";
            // 
            // menuItemOpen
            // 
            this.menuItemOpen.Index = 0;
            this.menuItemOpen.Text = "Open";
            // 
            // menuItemSeparator
            // 
            this.menuItemSeparator.Index = 1;
            this.menuItemSeparator.Text = "-";
            // 
            // menuItemSaveAs
            // 
            this.menuItemSaveAs.Index = 2;
            this.menuItemSaveAs.Text = "Save as";
            this.menuItemSaveAs.Click += new System.EventHandler(this.menuItemSaveAs_Click);
            // 
            // saveFileDialogContainer
            // 
            this.saveFileDialogContainer.Filter = "Container files|*.cont";
            // 
            // toolStripMain
            // 
            this.toolStripMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.openToolStripButton,
            this.toolStripButtonLoadFromDatabase,
            this.saveToolStripButton,
            this.toolStripButtonClear,
            this.toolStripButtonRefresh,
            this.toolStripButtonToolBox,
            this.toolStripButtonFont});
            this.toolStripMain.Location = new System.Drawing.Point(0, 0);
            this.toolStripMain.Name = "toolStripMain";
            this.toolStripMain.Size = new System.Drawing.Size(744, 25);
            this.toolStripMain.TabIndex = 6;
            this.toolStripMain.Text = "toolStrip1";
            // 
            // openToolStripButton
            // 
            this.openToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.openToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripButton.Image")));
            this.openToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
            this.openToolStripButton.Name = "openToolStripButton";
            this.openToolStripButton.Size = new System.Drawing.Size(23, 22);
            this.openToolStripButton.Text = "Open";
            // 
            // toolStripButtonLoadFromDatabase
            // 
            this.toolStripButtonLoadFromDatabase.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripButtonLoadFromDatabase.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonLoadFromDatabase.Image")));
            this.toolStripButtonLoadFromDatabase.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButtonLoadFromDatabase.Name = "toolStripButtonLoadFromDatabase";
            this.toolStripButtonLoadFromDatabase.Size = new System.Drawing.Size(23, 22);
            this.toolStripButtonLoadFromDatabase.Text = "Load from database";
            // 
            // saveToolStripButton
            // 
            this.saveToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.saveToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripButton.Image")));
            this.saveToolStripButton.ImageTransparentColor = System.Drawing.Color.Black;
            this.saveToolStripButton.Name = "saveToolStripButton";
            this.saveToolStripButton.Size = new System.Drawing.Size(23, 22);
            this.saveToolStripButton.Text = "Save";
            // 
            // toolStripButtonClear
            // 
            this.toolStripButtonClear.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripButtonClear.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonClear.Image")));
            this.toolStripButtonClear.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButtonClear.Name = "toolStripButtonClear";
            this.toolStripButtonClear.Size = new System.Drawing.Size(23, 22);
            this.toolStripButtonClear.Text = "toolStripButtonClear";
            // 
            // toolStripButtonRefresh
            // 
            this.toolStripButtonRefresh.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripButtonRefresh.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonRefresh.Image")));
            this.toolStripButtonRefresh.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButtonRefresh.Name = "toolStripButtonRefresh";
            this.toolStripButtonRefresh.Size = new System.Drawing.Size(23, 22);
            this.toolStripButtonRefresh.Text = "toolStripButton2";
            // 
            // toolStripButtonToolBox
            // 
            this.toolStripButtonToolBox.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripButtonToolBox.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonToolBox.Image")));
            this.toolStripButtonToolBox.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButtonToolBox.Name = "toolStripButtonToolBox";
            this.toolStripButtonToolBox.Size = new System.Drawing.Size(23, 22);
            this.toolStripButtonToolBox.Text = "toolStripButton1";
            // 
            // toolStripButtonFont
            // 
            this.toolStripButtonFont.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
            this.toolStripButtonFont.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonFont.Image")));
            this.toolStripButtonFont.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButtonFont.Name = "toolStripButtonFont";
            this.toolStripButtonFont.Size = new System.Drawing.Size(23, 22);
            this.toolStripButtonFont.Text = "toolStripButton1";
            // 
            // menuItem1
            // 
            this.menuItem1.Index = 3;
            this.menuItem1.Text = "Save";
            // 
            // menuItem2
            // 
            this.menuItem2.Index = 4;
            this.menuItem2.Text = "-";
            // 
            // menuItem3
            // 
            this.menuItem3.Index = 5;
            this.menuItem3.Text = "Exit";
            // 
            // FormContainerDesigner
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(760, 429);
            this.Controls.Add(this.panelCenter);
            this.Controls.Add(this.panelBottom);
            this.Controls.Add(this.panelTop);
            this.Controls.Add(this.panelRight);
            this.Controls.Add(this.panelLeft);
            this.Menu = this.mainMenuDesigner;
            this.Name = "FormContainerDesigner";
            this.Text = "Container designer";
            this.panelTop.ResumeLayout(false);
            this.panelTop.PerformLayout();
            this.panelCenter.ResumeLayout(false);
            this.panelBaseCheck.ResumeLayout(false);
            this.panelIntBottom.ResumeLayout(false);
            this.panelIntTop.ResumeLayout(false);
            this.panelLabel.ResumeLayout(false);
            this.panelLabel.PerformLayout();
            this.panelDrawing.ResumeLayout(false);
            this.toolStripMain.ResumeLayout(false);
            this.toolStripMain.PerformLayout();
            this.ResumeLayout(false);

		}
		#endregion

		private void buttonAcceptInterfaces_Click(object sender, System.EventArgs e)
		{
			selected.Clear();
			ICollection check = checkedListBoxInter.CheckedIndices;
			foreach (int i in check)
			{
				selected.Add(comp[i]);
			}
			fillCombo();
		}

		private void fillCombo()
		{
			comboBoxInter.Items.Clear();
			table.Clear();
			clearPanels();
			foreach (INamedComponent nc in selected)
			{
				comboBoxInter.Items.Add(nc.GetName(desktop));
			}
		}

		private void comboBoxInter_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			int n = comboBoxInter.SelectedIndex;
			object o = selected[n];
			if (!table.ContainsKey(o))
			{
				return;
			}
			object[] ob = table[o] as object[];
			blackPanels();
			Panel p = ob[0] as Panel;
			p.BackColor = Color.Red;
			textBoxComment.Text = ob[1] as string;
		}

		private ICollection Panels
		{
			get
			{
				ArrayList c = new ArrayList(panelDrawing.Controls);
				c.Remove(panelLabelPeer);
				return c;
			}
		}

		private void clearPanels()
		{
			ICollection c = Panels;
			foreach (Control comp in c)
			{
				panelLabelPeer.Controls.Remove(comp);	
			}
		}

		private void blackPanels()
		{
			ICollection c = Panels;
			foreach (Panel comp in c)
			{
				comp.BackColor = Color.Black;	
			}
		}

		private void panelDrawing_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			int n = comboBoxInter.SelectedIndex;
			if (n < 0)
			{
				return;
			}
			INamedComponent o = selected[n] as INamedComponent;
			blackPanels();
			if (table.ContainsKey(o))
			{
				object[] ob = table[o] as object[];
				Panel p = ob[0] as Panel;
				p.Left = e.X;
				p.Top = e.Y;
				ob[1] = this.textBoxComment.Text;
				return;
			}
			Panel pan = new Panel();
			pan.Width = 5;
			pan.Height = 5;
			pan.BackColor = Color.Red;
			pan.Left = e.X;
			pan.Top = e.Y;
			ToolTip t = new ToolTip();
			t.ShowAlways = true;
			t.SetToolTip(pan, o.GetName(desktop) + " :: " + textBoxComment.Text);
			panelDrawing.Controls.Add(pan);
			table[o] = new object[]{pan, textBoxComment.Text};
		}

		private void menuItemSaveAs_Click(object sender, System.EventArgs e)
		{
			try
			{
				ObjectContainer c = Container;;
				if (saveFileDialogContainer.ShowDialog(this) != DialogResult.OK)
				{
					return;
				}
				int n = saveFileDialogContainer.FileName.LastIndexOf("\\") + 1;
				string fn = saveFileDialogContainer.FileName.Substring(n);
				Stream stream = File.OpenWrite(saveFileDialogContainer.FileName);
				BinaryFormatter f = new BinaryFormatter();
				c.Type = fn;
				f.Serialize(stream, c);
				stream.Close();
			}
			catch (Exception ex)
			{
				string s = ex.StackTrace;
				s = null;
			}
			PureDesktopPeer.SetParents(desktop);
		}

		public ObjectContainer Container
		{
			get
			{
				PureDesktopPeer desk = new PureDesktopPeer();
				desk.Copy(desktop.Objects, desktop.Arrows, false);
				ObjectContainer c = new ObjectContainer(desk);
				foreach (INamedComponent nc in selected)
				{
					if (!table.ContainsKey(nc))
					{
						MessageBox.Show(this, "Not all");
						return null;
					}
					object[] o = table[nc] as object[];
					Panel p = o[0] as Panel;
					string comm = o[1] + "";
					PureDesktopPeer.SetParents(desktop);
					string nam = nc.GetName(desktop);
					PureDesktopPeer.SetParents(desk);
					INamedComponent comp = desk[nam];
					c.Add(comp, p.Left - panelLabelPeer.Left, p.Top - panelLabelPeer.Top, comm);
				}
				return c;
			}
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Architect
Russian Federation Russian Federation
Ph. D. Petr Ivankov worked as scientific researcher at Russian Mission Control Centre since 1978 up to 2000. Now he is engaged by Aviation training simulators http://dinamika-avia.com/ . His additional interests are:

1) Noncommutative geometry

http://front.math.ucdavis.edu/author/P.Ivankov

2) Literary work (Russian only)

http://zhurnal.lib.ru/editors/3/3d_m/

3) Scientific articles
http://arxiv.org/find/all/1/au:+Ivankov_Petr/0/1/0/all/0/1

Comments and Discussions