private void SpriteAssetClicked( AssetItem sender, MouseEventArgs e )
        {
            if( _selectedSpriteItem != null )
                _selectedSpriteItem.DeselectMe( );

            _selectedSpriteItem = sender as SpriteAssetItem;
            _selectedSpriteItem.SelectMe( );

            Global.Properties.SelectObject( _selectedSpriteItem.Sprite.Properties );

            if( e.Button == MouseButtons.Right )
            {
                _spriteItemContextMenu.Show( sender, e.Location );
            }
        }
        private void AddSprite( SpriteEd sprite )
        {
            SpriteAssetItem spriteItem = new SpriteAssetItem( sprite );
            _SetAssetItemProperties( spriteItem );
            spriteItem.AssetName = sprite.Name;
            spriteItem.AssetClicked += new AssetItemEventHandler( SpriteAssetClicked );

            _spritesTabPanel.Controls.Add( spriteItem );
            _spriteItems.Add( sprite.Name, spriteItem );

            sprite.SpriteAdded = true;
        }
        public void Initialize( string[] spritePaths, string[] scriptPaths, string[] actorPaths, string[] fontPaths )
        {
            if( !_isReset )
            {
            #if( DEBUG )
                throw new Exception( "Initialize cannot be called without Reset( ) being called first!" );
            #else
                return;
            #endif
            }

            if( !Directory.Exists( GetAssetFolder( AssetType.Sprite ) ) )
                Directory.CreateDirectory( GetAssetFolder( AssetType.Sprite ) );
            if( !Directory.Exists( GetAssetFolder( AssetType.Actor ) ) )
                Directory.CreateDirectory( GetAssetFolder( AssetType.Actor ) );
            if( !Directory.Exists( GetAssetFolder( AssetType.Script ) ) )
                Directory.CreateDirectory( GetAssetFolder( AssetType.Script ) );
            if( !Directory.Exists( GetAssetFolder( AssetType.Font ) ) )
                Directory.CreateDirectory( GetAssetFolder( AssetType.Font ) );

            SpriteAssetItem noSpriteItem = new SpriteAssetItem( Helper.GetSpriteFromImage( Global.GraphicsDevice, Properties.Resources.NoSprite ) );
            noSpriteItem.Visible = false;
            _spritesTab.Controls.Add( noSpriteItem );

            _LoadAssets( spritePaths, scriptPaths, actorPaths, fontPaths );
        }
        private void AddActorFromSprite( SpriteAssetItem spriteItem )
        {
            string actorName = spriteItem.AssetName;

            while( _actorItems.ContainsKey( actorName ) )
            {
                if( MessageBox.Show( Global.EditorTxt.ActorTypeWithSameNameExistsError + "\n" + Global.EditorTxt.ChooseNewNameMsg, "", MessageBoxButtons.YesNo, MessageBoxIcon.Question ) == DialogResult.Yes )
                    Helper.InputBox( Global.EditorTxt.NewActorTypeMsg, Global.EditorTxt.ActorTypeTypeNewName, ref actorName );
                else
                    return;
            }

            ActorTypeEd actor = new ActorTypeEd( );
            actor.Name = actorName;
            actor.Tags = new string[] { actorName };
            actor.Scale = 1f;
            actor.Rotation = 0f;
            actor.SpriteAsset = spriteItem;
            actor.Origin = new Microsoft.Xna.Framework.Vector2( spriteItem.Sprite.Width * 0.5f, spriteItem.Sprite.Height * 0.5f );
            actor.IsTextActor = false;
            actor.Text = "";
            actor.TextColor = Microsoft.Xna.Framework.Graphics.Color.White;

            actor.FilePath = Path.Combine( GetAssetFolder( AssetType.Actor ), actor.Name + Consts.Files.ACTORTYPE_EXTENSION );
            actor.Save( );

            AddActor( actor );

            Global.MainWindow.OnAssetAdded( );
        }
        public void DeleteSprite( SpriteAssetItem spriteItem )
        {
            try
            {
                foreach( ActorAssetItem actorItem in _actorItems.Values )
                {
                    if( actorItem.Actor.SpriteAsset == spriteItem )
                    {
                        actorItem.Actor.SpriteAsset = NoSpriteItem;
                        actorItem.UpdateAssetThumbnail( );
                        actorItem.Actor.Save( );
                    }
                }

                _spritesTabPanel.Controls.Remove( spriteItem );
                _spriteItems.Remove( spriteItem.Sprite.Name );

                File.Delete( spriteItem.FilePath );

                spriteItem.Sprite.Dispose( );
                spriteItem.Dispose( );

                Global.MainWindow.OnAssetRemoved( );
            }
            catch( Exception e )
            {
                ErrorReport.Throw( e );
            }
        }