Ejemplo n.º 1
0
    public void ReName()
    {
        //base.ReName ();
        InputTextDialog.Open(
            delegate(byte[] bts)
        {
            //创建文件夹
            IoBuffer ib = new IoBuffer();
            ib.PutBytes(bts);
            string newName = ib.GetString();
            Name           = newName;//这个名称不设置的化,当重命名后,再复制黏贴就出问题,显示的是未改名前的名称
            ResizeTextRect(newName);

            //刷TreeContainer的W.这里w的算法,跟上面Create中一致
            float _w = this.CurItemLeftOffset + UIEnum.ItemImageW + 4 + UIEnum.ItemImageW + Tools.GetStringW(this.ItemNameText.text, UIEnum.FontSize);
            MyTreeContainer.SetTreeW(_w);
            MyTreeContainer.RefreshTreeArea();
        }
            );
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 创建子文件夹
    /// 不需要加入xy偏移量,因为这个偏移量是固定的
    /// </summary>
    /// <param name="name">Name.</param>
    /// <param name="parentTrm">Parent trm.</param>
    public static TreeFolder CreateSubFolder(string folderName, TreeFolder parentFolder, TreeContainer menuList)
    {
        //添加文件夹时,如果父文件夹没有打开,先打开再添加
        if (!parentFolder.BeFolderOpen)
        {
            parentFolder.BeFolderOpen = true;
        }

        var folder = TreeFolder.Create(folderName, parentFolder.SubRootRectTransform, menuList);

        folder.ParentFolder = parentFolder;
        folder.BeRootFolder = false;

        //这里计算的是相对父folder的位置
        //float h = (parentFolder.SubItemNums + 1) * MenuListFolder.FolderH;
        float h = parentFolder.CurFolderH;

        folder._RectTransform.anchoredPosition = new Vector2(UIEnum.FolderBtnW, -h);
        folder.CreateMenu(folder);
        parentFolder.ItemList.Add(folder);

        //新建文件夹后通知上级进行重新排序,比如rootFolder下有10个subFolder,在第二个subFolder下新建,那么后面所有subFolder都要重排
        //这里注意下ui坐标系是左下是0,0所以负值是向下移动
        parentFolder.ParentYOrder(-UIEnum.FolderH, folder.IndexInParentFolder);


        //刷新下MenuList的边框宽,用于刷新MenuList滚动区域,item距离Menulist左边距离+两个图标间隔+4(文字和图标间隔)+w1(文字长度)
        if (!folder.BeRootFolder)
        {
            var   textRt = folder.ItemNameText.gameObject.GetComponent <RectTransform>();
            float w      = Tools.GetStringW(folder.ItemNameText.text, UIEnum.FontSize);
            float w1     = UIEnum.FolderBtnW + UIEnum.FolderImageW + w;
            float _w     = folder.CurItemLeftOffset + UIEnum.ItemImageW * 2 + 4 + w1;
            menuList.SetTreeW(_w);
            menuList.RefreshTreeArea();
        }

        return(folder);
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 这个方法只有从folder右键创建item时调用
    /// 其他地方用InsertItem
    /// </summary>
    /// <param name="itemName">Item name.</param>
    /// <param name="parentFolder">Parent folder.</param>
    /// <param name="menuList">Menu list.</param>
    public static TreeItem Create(string itemName, TreeFolder parentFolder, TreeContainer treeContainer)
    {
        //添加文件夹时,如果父文件夹没有打开,先打开再添加
        if (!parentFolder.BeFolderOpen)
        {
            parentFolder.BeFolderOpen = true;
        }

        //实例化文件夹
        GameObject go = GameObject.Instantiate(Resources.Load("Prefabs/TreeItem")) as GameObject;

        go.name = itemName;
        TreeItem item = go.GetComponent <TreeItem>();

        item.MyTreeContainer = treeContainer;
        item.BeFolder        = false;
        item.Name            = itemName;
        go.transform.SetParent(parentFolder.SubRootRectTransform as Transform);
        item._RectTransform           = go.GetComponent <RectTransform>();
        item._RectTransform.pivot     = new Vector2(0, 1);
        item._RectTransform.anchorMax = new Vector2(0, 1);
        item._RectTransform.anchorMin = new Vector2(0, 1);

        item.ItemNameText.text     = itemName;
        item.ItemNameText.fontSize = UIEnum.FontSize;
        var   textRt = item.ItemNameText.gameObject.GetComponent <RectTransform>();
        float w      = Tools.GetStringW(item.ItemNameText.text, UIEnum.FontSize);

        textRt.sizeDelta = new Vector2(w, UIEnum.ItmeH);

        //重新设置下Folder的边框宽度
        float w1 = UIEnum.ItemImageW + w;

        item._RectTransform.sizeDelta = new Vector2(w1, UIEnum.ItemH);

        item.ParentFolder = parentFolder;

        //float h = (parentFolder.SubItemNums + 1) * UIEnum.ItemH;
        float h = parentFolder.CurFolderH;

        //float h = parentFolder.CurFolderH;
        item._RectTransform.anchoredPosition = new Vector2(UIEnum.FolderBtnW * 2 + 4, -h);
        item.CreateMenu(item);

        parentFolder.ItemList.Add(item);
        parentFolder.RefreshItemNum();


        //新建文件夹后通知上级进行重新排序,比如rootFolder下有10个subFolder,在第二个subFolder下新建,那么后面所有subFolder都要重排
        //这里注意下ui坐标系是左下是0,0所以负值是向下移动
        parentFolder.ParentYOrder(-UIEnum.ItemH, item.IndexInParentFolder);


        //刷新下MenuList的边框宽,用于刷新MenuList滚动区域,item距离Menulist左边距离+一个图标间隔+4(文字和图标间隔)+w1(文字长度)
        float _w = item.CurItemLeftOffset + UIEnum.ItemImageW + 4 + w1;

        treeContainer.SetTreeW(_w);
        treeContainer.RefreshTreeArea();

        return(item);
    }