// Start is called before the first frame update void Start() { CM = GameObject.Find("ContextMenu").gameObject.GetComponent <ContextMenuScript>(); }
/// <summary> /// Insert the specified dock widget. /// </summary> /// <param name="dockWidget">Dock widget.</param> /// <param name="index">Index.</param> public void InsertDockWidget(DockWidgetScript dockWidget, int index = 0) { DebugEx.VerboseFormat("DockingGroupScript.InsertDockWidget(dockWidget = {0}, index = {1})", dockWidget, index); if (dockWidget.parent != null) { if (dockWidget.parent == this) { if (index < mChildren.Count && mChildren[index] == dockWidget) { // Do nothing return; } int foundIndex = mChildren.IndexOf(dockWidget); if (foundIndex >= 0) { if (mSelectedIndex == foundIndex) { mSelectedIndex = index; } else if (mSelectedIndex >= 0) { if (foundIndex < mSelectedIndex) { --mSelectedIndex; } if (index <= mSelectedIndex) { ++mSelectedIndex; } } mChildren.RemoveAt(foundIndex); mChildren.Insert(index, dockWidget); mTabsTransform.GetChild(foundIndex).SetSiblingIndex(index); dockWidget.transform.SetSiblingIndex(index); UpdateTabsGeometry(); } else { DebugEx.Error("Failed to insert dock widget"); } return; } else { dockWidget.parent.RemoveDockWidget(dockWidget); } } dockWidget.parent = this; mChildren.Insert(index, dockWidget); dockWidget.transform.SetParent(mContentTransform, false); dockWidget.transform.SetSiblingIndex(index); if (mSelectedIndex == -1) { mSelectedIndex = index; dockWidget.gameObject.SetActive(true); } else { if (index <= mSelectedIndex) { ++mSelectedIndex; } dockWidget.gameObject.SetActive(false); } //=========================================================================== // Tab GameObject //=========================================================================== #region Tab GameObject GameObject tab = new GameObject("Tab"); Utils.InitUIObject(tab, mTabsTransform); tab.transform.SetSiblingIndex(index); //=========================================================================== // RectTransform Component //=========================================================================== #region RectTransform Component tab.AddComponent <RectTransform>(); #endregion //=========================================================================== // CanvasRenderer Component //=========================================================================== #region CanvasRenderer Component tab.AddComponent <CanvasRenderer>(); #endregion //=========================================================================== // Image Component //=========================================================================== #region Image Component Image tabImage = tab.AddComponent <Image>(); tabImage.type = Image.Type.Sliced; #endregion //=========================================================================== // DockingTabButton Component //=========================================================================== #region DockingTabButton Component DockingTabButton tabButton = tab.AddComponent <DockingTabButton>(); tabButton.targetGraphic = tabImage; tabButton.dockWidget = dockWidget; tabButton.active = (mSelectedIndex == index) || (dockWidget == DummyDockWidgetScript.instance); #endregion //=========================================================================== // ContextMenuScript Component //=========================================================================== #region ContextMenuScript Component ContextMenuScript tabContextMenu = tab.AddComponent <ContextMenuScript>(); tabContextMenu.sourceObject = dockWidget; tabContextMenu.onShowContextMenu = OnShowContextMenu; #endregion //=========================================================================== // Image GameObject //=========================================================================== #region Image GameObject GameObject imageGameObject = new GameObject("Image"); Utils.InitUIObject(imageGameObject, tab.transform); //=========================================================================== // RectTransform Component //=========================================================================== #region RectTransform Component RectTransform imageTransform = imageGameObject.AddComponent <RectTransform>(); Utils.AlignRectTransformTopLeft(imageTransform, 12f, 12f, 9f, 3f); #endregion //=========================================================================== // CanvasRenderer Component //=========================================================================== #region CanvasRenderer Component imageGameObject.AddComponent <CanvasRenderer>(); #endregion //=========================================================================== // Image Component //=========================================================================== #region Image Component Image image = imageGameObject.AddComponent <Image>(); image.sprite = dockWidget.image; image.type = Image.Type.Sliced; #endregion #endregion //=========================================================================== // Text GameObject //=========================================================================== #region Text GameObject GameObject textObject = new GameObject("Text"); Utils.InitUIObject(textObject, tab.transform); //=========================================================================== // RectTransform Component //=========================================================================== #region RectTransform Component RectTransform textTransform = textObject.AddComponent <RectTransform>(); Utils.AlignRectTransformStretchStretch(textTransform, 25f, 0f, 6f, 0f); #endregion //=========================================================================== // Text Component //=========================================================================== #region Text Component Text text = textObject.AddComponent <Text>(); Assets.Common.DockWidgets.TextStyles.title.Apply(text); text.text = dockWidget.title; #endregion #endregion #endregion UpdateTabsGeometry(); }