private void TextureListBoxClick(Window callingWindow)
        {
            object highlightedObject = textureListBox.GetFirstHighlightedObject();

            if (highlightedObject is Texture2D)
            {
                mAnimationChainListWindow.HighlightObject(null, false);

                Texture2D asTexture2D =
                    highlightedObject as Texture2D;

                GuiData.ToolsWindow.currentTextureDisplay.SetOverlayTextures(highlightedObject as Texture2D, null);

                GuiData.ToolsWindow.currentTextureDisplay.SetTextureCoordinates(0, 1, 0, 1);

                GuiData.TextureCoordinatesSelectionWindow.Visible          = true;
                GuiData.TextureCoordinatesSelectionWindow.DisplayedTexture = asTexture2D;
            }
            else if (highlightedObject is DisplayRegion)
            {
                mAnimationChainListWindow.HighlightObject(null, false);

                DisplayRegion displayRegion = highlightedObject as DisplayRegion;
                Button        button        = GuiData.ToolsWindow.currentTextureDisplay;

                Texture2D parentTexture = textureListBox.GetFirstHighlightedParentObject() as Texture2D;

                // get the current CollapseItem's parent which is a texture
                button.SetOverlayTextures(parentTexture, null);

                button.SetTextureCoordinates(
                    displayRegion.Top,
                    displayRegion.Bottom,
                    displayRegion.Left,
                    displayRegion.Right);

                GuiData.TextureCoordinatesSelectionWindow.Visible          = true;
                GuiData.TextureCoordinatesSelectionWindow.DisplayedTexture = parentTexture;

                GuiData.TextureCoordinatesSelectionWindow.LeftTU   = displayRegion.Left;
                GuiData.TextureCoordinatesSelectionWindow.RightTU  = displayRegion.Right;
                GuiData.TextureCoordinatesSelectionWindow.TopTV    = displayRegion.Top;
                GuiData.TextureCoordinatesSelectionWindow.BottomTV = displayRegion.Bottom;
            }
            else
            {
                GuiData.ToolsWindow.currentTextureDisplay.SetOverlayTextures((Texture2D)null, (Texture2D)null);
            }
        }
        public void Update()
        {
            #region Update SpriteListBox
            if (SpriteListBox.Visible)
            {
                SpriteListBox.UpdateToList();

                if (SpriteListBox.AreHighlightsMatching(GameData.EditorLogic.CurrentSprites) == false)
                {
                    SpriteListBox.HighlightItem(null, false);
                    foreach (Sprite sprite in GameData.EditorLogic.CurrentSprites)
                    {
                        SpriteListBox.HighlightObject(sprite, true);
                    }
                }
            }
            #endregion

            #region Update ModelListBox

            if (mModelListBox.Visible)
            {
                mModelListBox.UpdateToList();

                if (mModelListBox.AreHighlightsMatching(GameData.EditorLogic.CurrentPositionedModels) == false)
                {
                    mModelListBox.HighlightItem(null, false);
                    foreach (PositionedModel model in GameData.EditorLogic.CurrentPositionedModels)
                    {
                        mModelListBox.HighlightObject(model, true);
                    }
                }
            }
            #endregion

            #region Update TextListBox

            if (mTextListBox.Visible)
            {
                mTextListBox.UpdateToList();

                if (mTextListBox.AreHighlightsMatching(GameData.EditorLogic.CurrentTexts) == false)
                {
                    mTextListBox.HighlightItem(null, false);
                    foreach (Text text in GameData.EditorLogic.CurrentTexts)
                    {
                        mTextListBox.HighlightObject(text, true);
                    }
                }
            }

            #endregion

            #region Update SpriteFrameListBox

            if (SpriteFrameListBox.Visible)
            {
                SpriteFrameListBox.UpdateToList();

                if (SpriteFrameListBox.AreHighlightsMatching(GameData.EditorLogic.CurrentSpriteFrames) == false)
                {
                    SpriteFrameListBox.HighlightItem(null, false);
                    foreach (SpriteFrame spriteFrame in GameData.EditorLogic.CurrentSpriteFrames)
                    {
                        SpriteFrameListBox.HighlightObject(spriteFrame, true);
                    }
                }
            }

            #endregion

            #region Update SpriteGridListBox

            if (SpriteGridListBox.Visible)
            {
                SpriteGridListBox.UpdateToList();

                if (SpriteGridListBox.GetFirstHighlightedObject() != SESpriteGridManager.CurrentSpriteGrid)
                {
                    // Update this if multiple SpriteGrids can ever be selected at once.
                    SpriteGridListBox.HighlightObject(SESpriteGridManager.CurrentSpriteGrid, false);
                }
            }

            #endregion

            #region Update AnimationChainListBox

            if (mAnimationChainListWindow.Visible)
            {
                mAnimationChainListWindow.UpdateToList();
            }

            #endregion
        }