static public GenericMenu GetGenericMenu <T>(AbstractXmlDatabase <T> database, SelectEvent <T> callback, System.Type createNewWindow) where T : class, IXmlDatabaseAsset
        {
            GenericMenu menu = new GenericMenu();

            if (createNewWindow != null)
            {
                menu.AddItem(new GUIContent("Create New"), false, () => {
                    EditorWindow.GetWindow(createNewWindow).Show();
                });

                menu.AddSeparator(null);
            }

            foreach (var asset in database.GetAssets())
            {
                T selectedAsset = asset;
                menu.AddItem(new GUIContent(asset.Name), false,
                             (index) => { callback(database.Get((int)index)); }, selectedAsset.Id);
            }

            return(menu);
        }
 static public void ShowContext <T>(AbstractXmlDatabase <T> database, SelectEvent <T> callback) where T : class, IXmlDatabaseAsset
 {
     GetGenericMenu(database, callback, null).ShowAsContext();
 }
 static public void ShowContext <T>(AbstractXmlDatabase <T> database, SelectEvent <T> callback, Rect position, System.Type createNewWindow) where T : class, IXmlDatabaseAsset
 {
     GetGenericMenu(database, callback, createNewWindow).DropDown(position);
 }
 static public void ShowContext <T>(AbstractXmlDatabase <T> database, SelectEvent <T> callback, Rect position) where T : class, IXmlDatabaseAsset
 {
     GetGenericMenu(database, callback, null).DropDown(position);
 }