public SoundItemLink(SoundItem soundItem, int index, SoundItemLinkType soundItemLinkType) : base() 
		{ 
			this.soundItem = soundItem;
			this.soundItemLinkType = soundItemLinkType;
			this.index = index;
			this.Size = new System.Drawing.Size(size,size);
			this.ContextMenu = new ContextMenu();
			
			if (soundItemLinkType == SoundItemLinkType.SoundInput) {
				//this.BackColor = System.Drawing.Color.LightGreen;
				this.BackgroundImage = (System.Drawing.Image) soundItem.SoundItemTree.Resources.GetObject("sound-in-handle");
				this.Location = new System.Drawing.Point(soundItem.Location.X,
				                                         soundItem.Location.Y + 32 - (soundItem.SoundInputs*size) + index * size * 2 + 4);
			}
			if (soundItemLinkType == SoundItemLinkType.SoundOutput) {
				this.BackgroundImage = (System.Drawing.Image) soundItem.SoundItemTree.Resources.GetObject("sound-out-handle");
				
				//this.BackColor = System.Drawing.Color.Yellow;
				this.Location = new System.Drawing.Point(soundItem.Location.X+64-size,
				                                         soundItem.Location.Y + 32 - (soundItem.SoundOutputs*size) + index * size * 2 + 4);
			}
			if (soundItemLinkType == SoundItemLinkType.MidiInput) {
				//this.BackColor = System.Drawing.Color.Aqua;
				this.BackgroundImage = (System.Drawing.Image) soundItem.SoundItemTree.Resources.GetObject("midi-in-handle");
				
				this.Location = new System.Drawing.Point(soundItem.Location.X + 32 - (soundItem.MidiInputs*size) + index * size * 2 + 4,
				                                         soundItem.Location.Y);
			}
			if (soundItemLinkType == SoundItemLinkType.MidiOutput) {
				//this.BackColor = System.Drawing.Color.Blue;
				this.BackgroundImage = (System.Drawing.Image) soundItem.SoundItemTree.Resources.GetObject("midi-out-handle");
				
				this.Location = new System.Drawing.Point(soundItem.Location.X + 32 - (soundItem.MidiOutputs*size) + index * size * 2 + 4,
				                                         soundItem.Location.Y + 64 - size);
			}
				
		}
		public void AddSoundItem(SoundItem sItem) 
		{
			SnapToGrid(sItem);
			SoundItems.Add(sItem);
			Controls.Add(sItem);
			
			sItem.MouseDown += new MouseEventHandler(this.EventSoundItemMouseDown);
			sItem.MouseMove += new MouseEventHandler(this.EventSoundItemMouseMove);
			sItem.MouseUp += new MouseEventHandler(this.EventSoundItemMouseUp);
		}
		void NewSoundItem(SoundBlock sb, System.Drawing.Point location) {
			int numSoundOutputs = (sb is ISoundRender) ? 1 : 0;
			int numMidiOutputs = (sb is IMidiRender) ? 1 : 0;
			if (sb is SoundOutRender) numSoundOutputs = 0;
			SoundItem sItem = new SoundItem(sItemTree,sb,sb.SoundInputs.Length,numSoundOutputs,sb.MidiInputs.Length,numMidiOutputs);
			sItem.Location = location;
			sItemTree.AddSoundItem(sItem);
		}