void DrawToolbar()
    {
        GUILayout.BeginHorizontal(EditorStyles.toolbar, GUILayout.ExpandWidth(true));

        // LHS
        GUILayout.BeginHorizontal(GUILayout.Width(leftBarWidth - 6));

        // Create Button
        GUIContent createButton     = new GUIContent("Create");
        Rect       createButtonRect = GUILayoutUtility.GetRect(createButton, EditorStyles.toolbarDropDown, GUILayout.ExpandWidth(false));

        if (GUI.Button(createButtonRect, createButton, EditorStyles.toolbarDropDown) && anim != null)
        {
            GUIUtility.hotControl = 0;
            EditorUtility.DisplayCustomMenu(createButtonRect, menuItems, -1,
                                            delegate(object userData, string[] options, int selected) {
                if (selected == 0)
                {
                    selectedClip    = CreateNewClip();
                    clipEditor.Clip = selectedClip;
                    clipEditor.InitForNewClip();
                    Repaint();
                }
                else if (menuTargets[selected] != null)
                {
                    tk2dEditor.SpriteAnimationEditor.AnimOperator animOp = menuTargets[selected];
                    tk2dSpriteAnimationClip newSelectedClip = animOp.OnAnimMenu(options[selected], allClips, selectedClip);
                    if (selectedClip != newSelectedClip)
                    {
                        selectedClip    = newSelectedClip;
                        clipEditor.Clip = selectedClip;
                    }

                    if ((animOp.AnimEditOperations & tk2dEditor.SpriteAnimationEditor.AnimEditOperations.AllClipsChanged) != tk2dEditor.SpriteAnimationEditor.AnimEditOperations.None)
                    {
                        FilterClips();
                        Repaint();
                    }
                    if ((animOp.AnimEditOperations & tk2dEditor.SpriteAnimationEditor.AnimEditOperations.NewClipCreated) != tk2dEditor.SpriteAnimationEditor.AnimEditOperations.None)
                    {
                        clipEditor.InitForNewClip();
                        Repaint();
                    }
                }
            }
                                            , null);
        }

        // Filter box
        if (anim != null)
        {
            GUILayout.Space(8);
            string newSearchFilter = GUILayout.TextField(searchFilter, tk2dEditorSkin.ToolbarSearch, GUILayout.ExpandWidth(true));
            if (newSearchFilter != searchFilter)
            {
                searchFilter = newSearchFilter;
                FilterClips();
            }
            if (searchFilter.Length > 0)
            {
                if (GUILayout.Button("", tk2dEditorSkin.ToolbarSearchClear, GUILayout.ExpandWidth(false)))
                {
                    searchFilter = "";
                    FilterClips();
                }
            }
            else
            {
                GUILayout.Label("", tk2dEditorSkin.ToolbarSearchRightCap);
            }
        }

        GUILayout.EndHorizontal();

        // Label
        if (anim != null)
        {
            if (GUILayout.Button(anim.name, EditorStyles.label))
            {
                EditorGUIUtility.PingObject(anim);
            }
        }

        // RHS
        GUILayout.FlexibleSpace();

        if (anim != null && GUILayout.Button("Revert", EditorStyles.toolbarButton))
        {
            Revert();
        }

        if (anim != null && GUILayout.Button("Commit", EditorStyles.toolbarButton))
        {
            Commit();
        }

        GUILayout.EndHorizontal();
    }