Exemplo n.º 1
0
        /// <summary>
        /// アセット追加ボタンを描画します
        /// </summary>
        private void DrawAddAssetButton()
        {
            var singleLineHeight = EditorGUIUtility.singleLineHeight;

            var rect = new Rect
            {
                x      = 0,
                y      = 0,
                width  = position.width / 3,
                height = singleLineHeight - 1
            };

            var current   = Event.current;
            var controlId = GUIUtility.GetControlID(FocusType.Passive);

            if (GUILayout.Button("Add Asset", EditorStyles.toolbarButton, GUILayout.Width(rect.width)))
            {
                var filePath  = EditorUtility.OpenFilePanel("UniBookmark", "", "");
                var assetPath = FileUtil.GetProjectRelativePath(filePath);

                AddBookmark(assetPath);

                ReloadTreeView();
            }

            switch (current.type)
            {
            case EventType.DragUpdated:
            case EventType.DragPerform:

                if (!rect.Contains(current.mousePosition))
                {
                    break;
                }

                DragAndDrop.visualMode      = DragAndDropVisualMode.Copy;
                DragAndDrop.activeControlID = controlId;

                if (current.type == EventType.DragPerform)
                {
                    DragAndDrop.AcceptDrag();

                    foreach (var draggedObject in DragAndDrop.objectReferences)
                    {
                        var path = AssetDatabase.GetAssetPath(draggedObject);
                        AddBookmark(path);
                    }

                    BookmarkSaveData.Save();
                    ReloadTreeView();

                    DragAndDrop.activeControlID = 0;
                }

                current.Use();
                break;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 各行の GUI を描画します
        /// </summary>
        protected override void RowGUI(RowGUIArgs args)
        {
            if (!(args.item is BookmarkData item) || !item.IsValid)
            {
                return;
            }

            var asset   = item.Asset;
            var path    = AssetDatabase.GetAssetPath(asset);
            var columns = args.GetNumVisibleColumns();

            for (var i = 0; i < columns; i++)
            {
                var rect        = args.GetCellRect(i);
                var columnIndex = ( ColumnType )args.GetColumn(i);

                switch (columnIndex)
                {
                case ColumnType.NAME:
                    EditorGUIUtility.SetIconSize(new Vector2(16, 16));
                    var label = EditorGUIUtility.ObjectContent(asset, null);
                    EditorGUI.LabelField(rect, label);
                    break;

                case ColumnType.PING:
                    if (GUI.Button(rect, "ping", EditorStyles.miniButton))
                    {
                        EditorGUIUtility.PingObject(asset);
                    }

                    break;

                case ColumnType.OPEN:
                    var isFolder = AssetDatabase.IsValidFolder(path);
                    using (new EditorGUI.DisabledScope(isFolder))
                    {
                        if (GUI.Button(rect, "open", EditorStyles.miniButton))
                        {
                            AssetDatabase.OpenAsset(asset);
                        }
                    }

                    break;

                case ColumnType.REMOVE:
                    if (GUI.Button(rect, "x", EditorStyles.miniButton))
                    {
                        BookmarkSaveData.List.Remove(item);
                        BookmarkSaveData.Save();
                        OnReload?.Invoke();
                    }

                    break;
                }
            }
        }
Exemplo n.º 3
0
        //================================================================================
        // 関数
        //================================================================================
        /// <summary>
        /// 有効になった時に呼び出されます
        /// </summary>
        private void OnEnable()
        {
            BookmarkSaveData.Load();

            var state = new TreeViewState();

            m_header = new BookmarkHeader(null);

            m_treeView = new BookmarkTreeView(state, m_header)
            {
                searchString = SessionState.GetString(SEARCH_STRING_STATE_KEY, string.Empty)
            };

            m_treeView.OnReload += ReloadTreeView;

            m_searchField = new SearchField();
            m_searchField.downOrUpArrowKeyPressed += m_treeView.SetFocusAndEnsureSelectedItem;
        }