/// <summary>
        ///     Called when the value needs to be edited.
        /// </summary>
        /// <param name="context">Context of editing.</param>
        /// <param name="provider">Provider of editing.</param>
        /// <param name="value">Original value to edit.</param>
        /// <returns>Edited version of original value.</returns>
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            EmitterEditorWindow emitterDesignerWindow = new EmitterEditorWindow();
            (value as EmitterNode).CopyTo(emitterDesignerWindow.Emitter);

            // Result of dialog is not really required.
            emitterDesignerWindow.ShowDialog();
            emitterDesignerWindow.Emitter.CopyTo(value as EmitterNode);
            return value as EmitterNode;
        }
        /// <summary>
        ///     Called when the value needs to be edited.
        /// </summary>
        /// <param name="context">Context of editing.</param>
        /// <param name="provider">Provider of editing.</param>
        /// <param name="value">Original value to edit.</param>
        /// <returns>Edited version of original value.</returns>
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            EmitterEditorWindow emitterDesignerWindow = new EmitterEditorWindow();

            (value as EmitterNode).CopyTo(emitterDesignerWindow.Emitter);

            // Result of dialog is not really required.
            emitterDesignerWindow.ShowDialog();
            emitterDesignerWindow.Emitter.CopyTo(value as EmitterNode);
            return(value as EmitterNode);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (projectTreeView.SelectedNode == null)
            {
                return;
            }
            switch (Path.GetExtension(projectTreeView.SelectedNode.FullPath.ToLower()))
            {
            case ".wav":
            case ".ogg":
            {
                MusicPlayerWindow window = new MusicPlayerWindow(projectTreeView.SelectedNode.FullPath);
                window.Show(this.Parent);
                break;
            }

            case ".fso":
            case ".fs":
            case ".fsl":
            {
                ScriptEditorWindow window = new ScriptEditorWindow(projectTreeView.SelectedNode.FullPath);
                window.FormClosing += new FormClosingEventHandler(ScriptEditorClosed);
                window.Show(this);
            }
            break;

            //case ".pk":
            //case ".dll":
            //     break;

            case ".fef":
            {
                EmitterEditorWindow window = new EmitterEditorWindow();
                if (IOMethods.FileSize(projectTreeView.SelectedNode.FullPath.ToLower()) > 3)
                {
                    Stream       stream = StreamFactory.RequestStream(projectTreeView.SelectedNode.FullPath, StreamMode.Open);
                    BinaryReader reader = new BinaryReader(stream);
                    reader.ReadBytes(3);

                    window.Emitter = new EmitterNode();
                    window.Emitter.Load(reader);

                    reader.Close();
                    stream.Close();
                }
                //if (window.ShowDialog() == DialogResult.OK)
                //{
                //   Stream stream = StreamFactory.RequestStream(projectTreeView.SelectedNode.FullPath, StreamMode.Truncate);
                //    BinaryWriter writer = new BinaryWriter(stream);

                //    writer.Write(new byte[] { (byte)'F', (byte)'E', (byte)'F' });
                //    window.Emitter.Save(writer);

                //    writer.Close();
                //    stream.Close();
                //}
                break;
            }

            case ".fmp":
                Editor.GlobalInstance.Window.OpenMap(projectTreeView.SelectedNode.FullPath);
                break;

            case ".xml":
            {
                if (projectTreeView.SelectedNode.FullPath.ToLower().StartsWith(Fusion.Editor.Editor.GlobalInstance.TilesetPath.ToLower()))
                {
                    if (IOMethods.FileSize(projectTreeView.SelectedNode.FullPath.ToLower()) == 0)
                    {
                        MessageBox.Show("This tileset configuration file is empty, unable to open tileset viewer.", "Empty", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    TilesetWindow window = new TilesetWindow(projectTreeView.SelectedNode.FullPath);
                    window.SelectionChanged += new EventHandler(tilesetWindow_TilesetSelectionChanged);
                    window.ColorChanged     += new EventHandler(tilesetWindow_TilesetColorChanged);
                    window.Show(this.Parent);
                }
                else
                {
                    ScriptEditorWindow window = new ScriptEditorWindow(projectTreeView.SelectedNode.FullPath);
                    window.IsPlainFile = true;
                    window.Show(this);
                }
                break;
            }

            case ".png":
            case ".bmp":
            case ".tga":
            {
                ImageWindow window = new ImageWindow(projectTreeView.SelectedNode.FullPath);
                window.Show(this.Parent);
                break;
            }

            default:
                Process process = new Process();
                process.StartInfo.FileName    = @"explorer";
                process.StartInfo.Arguments   = projectTreeView.SelectedNode.FullPath;
                process.StartInfo.Verb        = "Open";
                process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                process.Start();
                break;
            }
        }
 /// <summary>
 ///		Shows the effects manager.
 /// </summary>
 private void ShowEffectsDesigner()
 {
     if (_effectsDesignerWindow == null || _effectsDesignerWindow.IsDisposed == true)
     {
         _effectsDesignerWindow = new EmitterEditorWindow();
         _effectsDesignerWindow.Show(this);
     }
     else
     {
         if (_effectsDesignerWindow.Visible == false)
             _effectsDesignerWindow.Show(this);
         _effectsDesignerWindow.Focus();
     }
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (projectTreeView.SelectedNode == null) return;
            switch (Path.GetExtension(projectTreeView.SelectedNode.FullPath.ToLower()))
            {
                case ".wav":
                case ".ogg":
                    {
                        MusicPlayerWindow window = new MusicPlayerWindow(projectTreeView.SelectedNode.FullPath);
                        window.Show(this.Parent);
                        break;
                    }

                case ".fso":
                case ".fs":
                case ".fsl":
                    {
                        ScriptEditorWindow window = new ScriptEditorWindow(projectTreeView.SelectedNode.FullPath);
                        window.FormClosing += new FormClosingEventHandler(ScriptEditorClosed);
                        window.Show(this);
                    }
                    break;

                //case ".pk":
                //case ".dll":
                //     break;

                case ".fef":
                     {
                         EmitterEditorWindow window = new EmitterEditorWindow();
                         if (IOMethods.FileSize(projectTreeView.SelectedNode.FullPath.ToLower()) > 3)
                         {
                             Stream stream = StreamFactory.RequestStream(projectTreeView.SelectedNode.FullPath, StreamMode.Open);
                             BinaryReader reader = new BinaryReader(stream);
                             reader.ReadBytes(3);

                             window.Emitter = new EmitterNode();
                             window.Emitter.Load(reader);

                             reader.Close();
                             stream.Close();
                         }
                         //if (window.ShowDialog() == DialogResult.OK)
                         //{
                         //   Stream stream = StreamFactory.RequestStream(projectTreeView.SelectedNode.FullPath, StreamMode.Truncate);
                         //    BinaryWriter writer = new BinaryWriter(stream);

                         //    writer.Write(new byte[] { (byte)'F', (byte)'E', (byte)'F' });
                         //    window.Emitter.Save(writer);

                         //    writer.Close();
                         //    stream.Close();
                         //}
                         break;
                     }

                case ".fmp":
                     Editor.GlobalInstance.Window.OpenMap(projectTreeView.SelectedNode.FullPath);
                     break;

                case ".xml":
                     {
                         if (projectTreeView.SelectedNode.FullPath.ToLower().StartsWith(Fusion.Editor.Editor.GlobalInstance.TilesetPath.ToLower()))
                         {
                             if (IOMethods.FileSize(projectTreeView.SelectedNode.FullPath.ToLower()) == 0)
                             {
                                 MessageBox.Show("This tileset configuration file is empty, unable to open tileset viewer.", "Empty", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                 return;
                             }
                             TilesetWindow window = new TilesetWindow(projectTreeView.SelectedNode.FullPath);
                             window.SelectionChanged += new EventHandler(tilesetWindow_TilesetSelectionChanged);
                             window.ColorChanged += new EventHandler(tilesetWindow_TilesetColorChanged);
                             window.Show(this.Parent);
                         }
                         else
                         {
                             ScriptEditorWindow window = new ScriptEditorWindow(projectTreeView.SelectedNode.FullPath);
                             window.IsPlainFile = true;
                             window.Show(this);
                         }
                         break;
                     }

                case ".png":
                case ".bmp":
                case ".tga":
                     {
                         ImageWindow window = new ImageWindow(projectTreeView.SelectedNode.FullPath);
                         window.Show(this.Parent);
                         break;
                     }

                default:
                     Process process = new Process();
                     process.StartInfo.FileName = @"explorer";
                     process.StartInfo.Arguments = projectTreeView.SelectedNode.FullPath;
                     process.StartInfo.Verb = "Open";
                     process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                     process.Start();
                     break;
            }
        }