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); }