public DockWidgetScript()
            : base()
        {
            mParent          = null;
            mBackgroundColor = new Color(1f, 1f, 1f, 1f);
            mImage           = Assets.DockWidgets.Textures.icon;
            mTokenId         = R.sections.DockWidgets.strings.Count;

            mContentTransform       = null;
            mContentBackgroundImage = null;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="Common.UI.DockWidgets.DockingAreaScript"/> class.
        /// </summary>
        public DockingAreaScript()
            : base()
        {
            mInstances.Add(this);

            mOrientation        = DockingAreaOrientation.None;
            mParent             = null;
            mChildren           = new List<DockingAreaScript>();
            mSizes              = new List<float>();
            mDockingGroupScript = null;
            mCachedDragCorners  = null;
        }
        public DockWidgetScript()
            : base()
        {
            DebugEx.Verbose("Created DockWidgetScript object");

            mParent          = null;
            mBackgroundColor = Assets.Common.DockWidgets.Colors.background;
            mImage           = Assets.Common.DockWidgets.Textures.icon.sprite;
            mTokenId         = R.sections.DockWidgets.strings.Count;

            mContentTransform       = null;
            mContentBackgroundImage = null;
        }
Beispiel #4
0
        public DockWidgetScript()
            : base()
        {
            DebugEx.Verbose("Created DockWidgetScript object");

            mParent          = null;
            mBackgroundColor = Assets.Common.DockWidgets.Colors.background;
            mImage           = Assets.Common.DockWidgets.Textures.icon.sprite;
            mTokenId         = R.sections.DockWidgets.strings.Count;

            mContentTransform       = null;
            mContentBackgroundImage = null;
        }
        /// <summary>
        /// Insert dock widget into specified docking area.
        /// </summary>
        /// <param name="dockingArea">Docking area.</param>
        /// <param name="orientation">Orientation.</param>
        /// <param name="index">Index.</param>
        public void InsertToDockingGroup(DockingGroupScript dockingGroup, int index = 0)
        {
            DebugEx.VerboseFormat("DockWidgetScript.InsertToDockingGroup(dockingGroup = {0}, index = {1})", dockingGroup, index);

            dockingGroup.InsertDockWidget(this, index);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="Common.UI.DockWidgets.DockingAreaScript"/> class.
        /// </summary>
        public DockingAreaScript()
            : base()
        {
            DebugEx.Verbose("Created DockingAreaScript object");

            sInstances.Add(this);

            mOrientation        = DockingAreaOrientation.None;
            mParent             = null;
            mChildren           = new List<DockingAreaScript>();
            mSizes              = new List<float>();
            mDockingGroupScript = null;
            mCachedDragCorners  = null;
            mChildlessListeners = new UnityEvent();
        }
        /// <summary>
        /// Removes the docking area.
        /// </summary>
        /// <param name="dockingArea">Docking area.</param>
        public void RemoveDockingArea(DockingAreaScript dockingArea)
        {
            DebugEx.VerboseFormat("DockingAreaScript.RemoveDockingArea(dockingArea = {0})", dockingArea);

            if (dockingArea.parent == this)
            {
                int index = mChildren.IndexOf(dockingArea);

                if (index >= 0)
                {
                    float size = mSizes[index];

                    mChildren.RemoveAt(index);
                    mSizes.RemoveAt(index);

                    if (size < 1f)
                    {
                        float sizeMultiplier = 1 / (1f - size);

                        for (int i = 0; i < mSizes.Count; ++i)
                        {
                            mSizes[i] *= sizeMultiplier;
                        }
                    }
                    else
                    {
                        if (mSizes.Count > 0)
                        {
                            float newSize = 1f / mSizes.Count;

                            for (int i = 0; i < mSizes.Count; ++i)
                            {
                                mSizes[i] = newSize;
                            }
                        }
                    }

                    if (mChildren.Count == 1)
                    {
                        dockingArea = mChildren[0];

                        DockingAreaOrientation  orientation        = dockingArea.mOrientation;
                        List<DockingAreaScript> children           = dockingArea.mChildren;
                        List<float>             sizes              = dockingArea.mSizes;
                        DockingGroupScript      dockingGroupScript = dockingArea.mDockingGroupScript;

                        if (dockingGroupScript != null)
                        {
                            dockingGroupScript.parent = this;
                            dockingGroupScript.transform.SetParent(transform, false);
                        }
                        else
                        {
                            foreach (DockingAreaScript child in children)
                            {
                                child.mParent = this;
                                child.transform.SetParent(transform, false);
                            }
                        }

                        dockingArea.Destroy();

                        mOrientation        = orientation;
                        mChildren           = children;
                        mSizes              = sizes;
                        mDockingGroupScript = dockingGroupScript;
                    }

                    OnResize();
                }
                else
                {
                    DebugEx.Error("Failed to remove docking area");
                }
            }
            else
            {
                DebugEx.Error("Docking area belongs not to this docking area");
            }
        }
        /// <summary>
        /// Removes the docking group.
        /// </summary>
        /// <param name="dockingGroup">Docking group.</param>
        public void RemoveDockingGroup(DockingGroupScript dockingGroup)
        {
            DebugEx.VerboseFormat("DockingAreaScript.RemoveDockingGroup(dockingGroup = {0})", dockingGroup);

            if (mDockingGroupScript == dockingGroup)
            {
                if (mParent != null)
                {
                    Destroy();
                }
                else
                {
                    mDockingGroupScript = null;
                    mSizes.Clear();

                    mChildlessListeners.Invoke();
                }
            }
            else
            {
                DebugEx.Error("Failed to remove docking group");
            }
        }
        /// <summary>
        /// Inserts the specified dock widget.
        /// </summary>
        /// <param name="dockWidget">Dock widget.</param>
        /// <param name="orientation">Orientation.</param>
        /// <param name="index">Index.</param>
        public void InsertDockWidget(DockWidgetScript dockWidget, DockingAreaOrientation orientation = DockingAreaOrientation.Horizontal, int index = 0)
        {
            DebugEx.VerboseFormat("DockingAreaScript.InsertDockWidget(dockWidget = {0}, orientation = {1}, index = {2})", dockWidget, orientation, index);

            //***************************************************************************
            // DockingGroup GameObject
            //***************************************************************************
            #region DockingGroup GameObject
            GameObject dockingGroup = new GameObject("DockingGroup");

            //===========================================================================
            // RectTransform Component
            //===========================================================================
            #region RectTransform Component
            RectTransform dockingGroupTransform = dockingGroup.AddComponent<RectTransform>();
            Utils.AlignRectTransformStretchStretch(dockingGroupTransform);
            #endregion

            //===========================================================================
            // DockingGroupScript Component
            //===========================================================================
            #region DockingGroupScript Component
            DockingGroupScript dockingGroupScript = dockingGroup.AddComponent<DockingGroupScript>();

            dockingGroupScript.InsertDockWidget(dockWidget);
            #endregion
            #endregion

            if (mChildren.Count == 0 && mDockingGroupScript == null)
            {
                mSizes.Add(1f);

                Utils.InitUIObject(dockingGroup, transform);
                mDockingGroupScript = dockingGroupScript;
                mDockingGroupScript.parent = this;
            }
            else
            if (mChildren.Count == 0 && mDockingGroupScript != null)
            {
                mSizes[0] = 0.5f;
                mSizes.Add(0.5f);

                mOrientation = orientation;

                //***************************************************************************
                // DockingArea GameObject
                //***************************************************************************
                #region DockingArea GameObject
                GameObject dockingArea = new GameObject("DockingArea");
                Utils.InitUIObject(dockingArea, transform);

                //===========================================================================
                // RectTransform Component
                //===========================================================================
                #region RectTransform Component
                dockingArea.AddComponent<RectTransform>();
                #endregion

                //===========================================================================
                // DockingAreaScript Component
                //===========================================================================
                #region DockingAreaScript Component
                DockingAreaScript dockingAreaScript = dockingArea.AddComponent<DockingAreaScript>();
                dockingAreaScript.mParent = this;
                mChildren.Add(dockingAreaScript);
                dockingAreaScript.mSizes.Add(1f);

                if (index == 0)
                {
                    Utils.InitUIObject(dockingGroup, dockingArea.transform);
                    dockingAreaScript.mDockingGroupScript = dockingGroupScript;
                    dockingAreaScript.mDockingGroupScript.parent = dockingAreaScript;
                }
                else
                {
                    Utils.InitUIObject(mDockingGroupScript.gameObject, dockingArea.transform);
                    dockingAreaScript.mDockingGroupScript = mDockingGroupScript;
                    dockingAreaScript.mDockingGroupScript.parent = dockingAreaScript;
                }
                #endregion
                #endregion

                //***************************************************************************
                // DockingArea GameObject
                //***************************************************************************
                #region DockingArea GameObject
                dockingArea = new GameObject("DockingArea");
                Utils.InitUIObject(dockingArea, transform);

                //===========================================================================
                // RectTransform Component
                //===========================================================================
                #region RectTransform Component
                dockingArea.AddComponent<RectTransform>();
                #endregion

                //===========================================================================
                // DockingAreaScript Component
                //===========================================================================
                #region DockingAreaScript Component
                dockingAreaScript = dockingArea.AddComponent<DockingAreaScript>();
                dockingAreaScript.mParent = this;
                mChildren.Add(dockingAreaScript);
                dockingAreaScript.mSizes.Add(1f);

                if (index == 0)
                {
                    Utils.InitUIObject(mDockingGroupScript.gameObject, dockingArea.transform);
                    dockingAreaScript.mDockingGroupScript = mDockingGroupScript;
                    dockingAreaScript.mDockingGroupScript.parent = dockingAreaScript;
                }
                else
                {
                    Utils.InitUIObject(dockingGroup, dockingArea.transform);
                    dockingAreaScript.mDockingGroupScript = dockingGroupScript;
                    dockingAreaScript.mDockingGroupScript.parent = dockingAreaScript;
                }
                #endregion
                #endregion

                mDockingGroupScript = null;
            }
            else
            {
                if (orientation != DockingAreaOrientation.None)
                {
                    if (mOrientation == orientation)
                    {
                        float newSize = 1f / (mSizes.Count + 1);
                        float sizeMultiplier = 1f - newSize;

                        for (int i = 0; i < mSizes.Count; ++i)
                        {
                            mSizes[i] *= sizeMultiplier;
                        }

                        mSizes.Insert(index, newSize);

                        //***************************************************************************
                        // DockingArea GameObject
                        //***************************************************************************
                        #region DockingArea GameObject
                        GameObject dockingArea = new GameObject("DockingArea");
                        Utils.InitUIObject(dockingArea, transform);
                        dockingArea.transform.SetSiblingIndex(index);

                        //===========================================================================
                        // RectTransform Component
                        //===========================================================================
                        #region RectTransform Component
                        dockingArea.AddComponent<RectTransform>();
                        #endregion

                        //===========================================================================
                        // DockingAreaScript Component
                        //===========================================================================
                        #region DockingAreaScript Component
                        DockingAreaScript dockingAreaScript = dockingArea.AddComponent<DockingAreaScript>();
                        dockingAreaScript.mParent = this;
                        mChildren.Insert(index, dockingAreaScript);
                        dockingAreaScript.mSizes.Add(1f);

                        Utils.InitUIObject(dockingGroup, dockingArea.transform);
                        dockingAreaScript.mDockingGroupScript = dockingGroupScript;
                        dockingAreaScript.mDockingGroupScript.parent = dockingAreaScript;
                        #endregion
                        #endregion
                    }
                    else
                    {
                        List<DockingAreaScript> newChildren = new List<DockingAreaScript>();
                        List<float>             newSizes    = new List<float>();

                        newSizes.Add(0.5f);
                        newSizes.Add(0.5f);

                        //***************************************************************************
                        // DockingArea GameObject
                        //***************************************************************************
                        #region DockingArea GameObject
                        GameObject dockingArea = new GameObject("DockingArea");
                        Utils.InitUIObject(dockingArea, transform);

                        //===========================================================================
                        // RectTransform Component
                        //===========================================================================
                        #region RectTransform Component
                        dockingArea.AddComponent<RectTransform>();
                        #endregion

                        //===========================================================================
                        // DockingAreaScript Component
                        //===========================================================================
                        #region DockingAreaScript Component
                        DockingAreaScript dockingAreaScript = dockingArea.AddComponent<DockingAreaScript>();
                        dockingAreaScript.mParent = this;
                        newChildren.Add(dockingAreaScript);

                        if (index == 0)
                        {
                            Utils.InitUIObject(dockingGroup, dockingArea.transform);
                            dockingAreaScript.mDockingGroupScript = dockingGroupScript;
                            dockingAreaScript.mDockingGroupScript.parent = dockingAreaScript;

                            dockingAreaScript.mSizes.Add(1f);
                        }
                        else
                        {
                            foreach (DockingAreaScript child in mChildren)
                            {
                                child.mParent = dockingAreaScript;
                                child.transform.SetParent(dockingArea.transform, false);
                            }

                            dockingAreaScript.mOrientation = mOrientation;
                            dockingAreaScript.mChildren    = mChildren;
                            dockingAreaScript.mSizes       = mSizes;
                        }
                        #endregion
                        #endregion

                        //***************************************************************************
                        // DockingArea GameObject
                        //***************************************************************************
                        #region DockingArea GameObject
                        dockingArea = new GameObject("DockingArea");
                        Utils.InitUIObject(dockingArea, transform);

                        //===========================================================================
                        // RectTransform Component
                        //===========================================================================
                        #region RectTransform Component
                        dockingArea.AddComponent<RectTransform>();
                        #endregion

                        //===========================================================================
                        // DockingAreaScript Component
                        //===========================================================================
                        #region DockingAreaScript Component
                        dockingAreaScript = dockingArea.AddComponent<DockingAreaScript>();
                        dockingAreaScript.mParent = this;
                        newChildren.Add(dockingAreaScript);

                        if (index == 0)
                        {
                            foreach (DockingAreaScript child in mChildren)
                            {
                                child.mParent = dockingAreaScript;
                                child.transform.SetParent(dockingArea.transform, false);
                            }

                            dockingAreaScript.mOrientation = mOrientation;
                            dockingAreaScript.mChildren    = mChildren;
                            dockingAreaScript.mSizes       = mSizes;
                        }
                        else
                        {
                            Utils.InitUIObject(dockingGroup, dockingArea.transform);
                            dockingAreaScript.mDockingGroupScript = dockingGroupScript;
                            dockingAreaScript.mDockingGroupScript.parent = dockingAreaScript;

                            dockingAreaScript.mSizes.Add(1f);
                        }
                        #endregion
                        #endregion

                        mOrientation = orientation;

                        mChildren = newChildren;
                        mSizes    = newSizes;
                    }
                }
                else
                {
                    DebugEx.ErrorFormat("Invalid orientation value: {0}", orientation);
                }
            }

            OnResize();
        }
 /// <summary>
 /// Removes the docking group.
 /// </summary>
 /// <param name="dockingGroup">Docking group.</param>
 public void RemoveDockingGroup(DockingGroupScript dockingGroup)
 {
     if (mDockingGroupScript == dockingGroup)
     {
         if (mParent != null)
         {
             Destroy();
         }
         else
         {
             mDockingGroupScript = null;
         }
     }
     else
     {
         Debug.LogError("Failed to remove docking group");
     }
 }
        /// <summary>
        /// Removes the docking area.
        /// </summary>
        /// <param name="dockingArea">Docking area.</param>
        public void RemoveDockingArea(DockingAreaScript dockingArea)
        {
            if (dockingArea.parent == this)
            {
                int index = mChildren.IndexOf(dockingArea);

                if (index >= 0)
                {
                    mChildren.RemoveAt(index);

                    if (mChildren.Count == 1)
                    {
                        dockingArea = mChildren[0];

                        mOrientation        = dockingArea.mOrientation;
                        mChildren           = dockingArea.mChildren;
                        mSizes              = dockingArea.mSizes;
                        mDockingGroupScript = dockingArea.mDockingGroupScript;

                        if (mDockingGroupScript != null)
                        {
                            mDockingGroupScript.parent = this;
                            mDockingGroupScript.transform.SetParent(transform, false);
                        }
                        else
                        {
                            foreach (DockingAreaScript child in mChildren)
                            {
                                child.mParent = this;
                                child.transform.SetParent(transform, false);
                            }
                        }

                        UnityEngine.Object.DestroyObject(dockingArea.gameObject);
                    }

                    OnResize();
                }
                else
                {
                    Debug.LogError("Failed to remove docking area");
                }
            }
            else
            {
                Debug.LogError("Docking area belongs not to this docking area");
            }
        }
 /// <summary>
 /// Insert dock widget into specified docking area.
 /// </summary>
 /// <param name="dockingArea">Docking area.</param>
 /// <param name="orientation">Orientation.</param>
 /// <param name="index">Index.</param>
 public void InsertToDockingGroup(DockingGroupScript dockingGroup, int index = 0)
 {
     dockingGroup.InsertDockWidget(this, index);
 }
Beispiel #13
0
        /// <summary>
        /// Insert dock widget into specified docking area.
        /// </summary>
        /// <param name="dockingArea">Docking area.</param>
        /// <param name="orientation">Orientation.</param>
        /// <param name="index">Index.</param>
        public void InsertToDockingGroup(DockingGroupScript dockingGroup, int index = 0)
        {
            DebugEx.VerboseFormat("DockWidgetScript.InsertToDockingGroup(dockingGroup = {0}, index = {1})", dockingGroup, index);

            dockingGroup.InsertDockWidget(this, index);
        }