protected void InitializeElement(string labelText, string value) { label = new ListItemText(labelText); label.AddToClassList("list-item-label", "alternate"); keyDisplay = new ListItemText(value); keyDisplay.AddToClassList("list-item-text-display"); button = new ListItemImage(caretIcon); button.AddToClassList("selectable", "hoverable"); button.eventManager.AddListener <MouseClickEvent>(e => { if (e.button != 0) { return; } KeySelector keySelector = KeySelector.Open(); keySelector.eventManager.Raise <SetSelectorParameters <HashSet <string> > >(new SetSelectorParameters <HashSet <string> >(keys)); keySelector.eventManager.AddListener <MainframeKeySelection <string> >(ev => { keyDisplay.text = ev.value; value = ev.value; this.eventManager.Raise <MainframeKeySelection <string> >(ev); }); }); this.Add(label, keyDisplay, button); }
protected virtual void DrawComponent(ProvenceComponent component, VisualElement parent, bool removeable = true, bool hide = false) { Div container = new Div(); container.AddToClassList("search-list-item"); container.userData = component.GetType().Name; foreach (Type tag in collection[chosenKey].tags) { if (((MainframeTag)Activator.CreateInstance(tag)).requiredComponents.Contains(component.GetType())) { container.userData += tag.Name; } } ListItem titleItem = new ListItem(false, true); ListItemText title = titleItem.AddTitle(System.Text.RegularExpressions.Regex.Replace(component.GetType().Name, @"((?<=\p{Ll})\p{Lu})|((?!\A)\p{Lu}(?>\p{Ll}))", " $0")); titleItem.name = component.GetType().Name.ToLower() + "-control-title"; titleItem.AddToClassList("structure-control-title", "spacer"); Div structContainer = (Div)Helpers.InvokeGenericMethod <ProvenceCollectionEditor <U> >(this, "DrawComponentControl", component.GetType(), component); titleItem.eventManager.AddListener <MouseClickEvent>(e => { switch (e.button) { case 0: if (title.ClassListContains("second-alternate")) { title.RemoveFromClassList("second-alternate"); } else { title.AddToClassList("second-alternate"); } structContainer.Toggle(); break; case 1: if (removeable) { entryEditorComponentContextMenu.Show(root, e, true); ListItem removeButton = entryEditorComponentContextMenu.Q <ListItem>("entry-editor-component-remove-button"); removeButton.eventManager.ClearListeners(); removeButton.eventManager.AddListener <MouseClickEvent>(ev => { Helpers.InvokeGenericMethod <ProvenceCollectionEditor <U> >(this, "RemoveComponentFromEntry", component.GetType()); entryEditorComponentContextMenu.Toggle(); }); } break; } }); if (hide) { titleItem.eventManager.Raise <MouseClickEvent>(new MouseClickEvent(titleItem, 0, Vector2.zero)); } container.Add(titleItem, structContainer); parent.Add(container); }
protected void InitializeElement(string labelText) { label = new ListItemText(labelText); label.AddToClassList("list-item-label"); objectDisplay = new ObjectField(); objectDisplay.allowSceneObjects = false; objectDisplay.objectType = typeof(GameObject); objectDisplay.value = objectValue; objectDisplay.AddToClassList("list-item-input", "list-item-object-input", "second-alternate"); button = new ListItemImage(caretIcon); button.AddToClassList("selectable", "hoverable"); button.eventManager.AddListener <MouseClickEvent>(e => { if (e.button != 0) { return; } HierarchySelector hierarchySelector = HierarchySelector.Open(); hierarchySelector.eventManager.Raise <SetSelectorParameters <GameObject> >(new SetSelectorParameters <GameObject>(root)); hierarchySelector.eventManager.AddListener <MainframeKeySelection <int[]> >(ev => { this.value = ev.value; this.objectDisplay.value = HierarchySelector.GetChildByHierarhcy(root, ev.value); this.eventManager.Raise <MainframeKeySelection <int[]> >(ev); }); }); this.Add(label, objectDisplay, button); }
protected ListItem DrawShelf(string titleText, out Div container) { ListItem titleItem = new ListItem(); titleItem.AddToClassList("spacer", "selectable", "container-title"); ListItemText title = titleItem.AddTitle(titleText); container = new Div(); container.AddToClassList("category-container"); Div containerRef = container; titleItem.eventManager.AddListener <MouseClickEvent>(e => { if (e.button != 0) { return; } if (title.ClassListContains("second-alternate")) { title.RemoveFromClassList("second-alternate"); } else { title.AddToClassList("second-alternate"); } containerRef.Toggle(); }); return(titleItem); }
public ListItemText AddLabel(string text, bool alternate = false, bool secondAlternate = false, bool thirdAlternate = false) { ListItemText el = new ListItemText(text, alternate, secondAlternate, thirdAlternate); el.AddToClassList("list-item-label"); this.Add(el); return(el); }
//Inputs public ListItemText AddButton(string text, bool alternate = false, bool secondAlternate = false, bool thirdAlternate = false) { ListItemText el = new ListItemText(text, alternate, secondAlternate, thirdAlternate); el.AddToClassList("list-item-button"); el.AddToClassList("selectable"); this.Add(el); return(el); }
public ListItemText AddTextDisplay(string text, bool alternate = false, bool secondAlternate = false, bool thirdAlternate = false) { ListItemText el = new ListItemText(text, alternate, secondAlternate, thirdAlternate); el.AddToClassList("list-item-text-display"); AddAlternates(el, alternate, secondAlternate, thirdAlternate); this.Add(el); return(el); }
protected override void DrawTagList() { tagListScroller.Clear(); if (chosenKey != null) { foreach (System.Type tag in collection[chosenKey].tags) { ListItemText tagElement = new ListItemText(tag.Name); tagElement.userData = tag; tagElement.AddToClassList("entry-editor-tag"); tagElement.eventManager.AddListener <MouseClickEvent>(e => { switch (e.button) { case 0: ListItemSearchBar compSearchBar = root.Q <ListItemSearchBar>("entry-editor-search-bar"); compSearchBar.searchInput.value = compSearchBar.searchInput.value.Replace(" ", ""); if (tagElement.ClassListContains("selected")) { tagElement.RemoveFromClassList("selected"); compSearchBar.searchInput.value = compSearchBar.searchInput.text.ToLower().Replace(tag.Name.ToLower() + "/", ""); } else { tagElement.AddToClassList("selected"); if (compSearchBar.searchInput.value == "") { compSearchBar.searchInput.value = tag.Name.ToLower() + "/"; } else { if (compSearchBar.searchInput.value[compSearchBar.searchInput.value.Length - 1] != '/') { compSearchBar.searchInput.value += "/"; } compSearchBar.searchInput.value += tag.Name.ToLower() + "/"; } } break; case 1: entryEditorTagContextMenu.Show(root, e, true); ListItem removeButton = entryEditorTagContextMenu.Q <ListItem>("entry-editor-tag-remove-button"); removeButton.eventManager.ClearListeners(); removeButton.eventManager.AddListener <MouseClickEvent>(ev => { RemoveTagFromEntry((dynamic)tagElement.userData); entryEditorTagContextMenu.Toggle(); }); break; } }); tagListScroller.Add(tagElement); } } }
protected void DrawAnimationControls(GameObject model) { Div animationDrawer = new Div(); ListItem titleItem = new ListItem(); titleItem.AddToClassList("spacer", "selectable", "container-title"); titleItem.AddImage(null); ListItemText title = titleItem.AddTitle("Animation Keys"); ListItemImage addButton = titleItem.AddImage(addIcon); addButton.AddToClassList("hoverable", "selectable"); addButton.eventManager.AddListener <MouseClickEvent>(e => { if (e.button != 0) { return; } collection[chosenKey].animationData[""] = new ModelAnimationData(); eventManager.Raise <SetSceneDirtyEvent>(new SetSceneDirtyEvent(SceneManager.GetActiveScene())); DrawAnimationDrawer(animationDrawer, model); }); Div container = new Div(); container.AddToClassList("category-container"); title.eventManager.AddListener <MouseClickEvent>(e => { if (e.button != 0) { return; } if (title.ClassListContains("second-alternate")) { title.RemoveFromClassList("second-alternate"); } else { title.AddToClassList("second-alternate"); } container.Toggle(); }); ListItem searchBar = new ListItemSearchBar(animationDrawer); DrawAnimationDrawer(animationDrawer, model); container.Add(searchBar, animationDrawer); entryEditorScroller.Add(titleItem, container); }
protected void DrawComponentListItem(ComponentHandle <ProvenceComponent> handle, DropDownMenu contextMenu, bool alternate) { ListItem item = new ListItem(alternate, true); string componentName = System.Text.RegularExpressions.Regex.Replace(handle.component.GetType().Name, @"((?<=\p{Ll})\p{Lu})|((?!\A)\p{Lu}(?>\p{Ll}))", " $0"); item.AddButton(componentName, false, false, true); item.eventManager.AddListener <MouseClickEvent>(e => { if (e.element != item) { return; } switch (e.button) { case 0: if (item.ClassListContains("selected")) { item.RemoveFromClassList("selected"); } else { item.AddToClassList("selected"); } eventManager.Raise <SelectKey <ProvenceComponent> >(new SelectKey <ProvenceComponent>(handle.component)); break; case 1: contextMenu.Show(root, e, true); ListItemText removeButton = root.Q <ListItemText>("component-list-context-menu-remove-button"); removeButton.eventManager.ClearListeners(); removeButton.eventManager.AddListener <MouseClickEvent>(ev => { if (ev.button != 0) { return; } if (chosenComponents.Contains(handle.component)) { chosenComponents.Remove(handle.component); } Helpers.InvokeGenericMethod(this, "RemoveComponent", handle.component.GetType()); contextMenu.style.display = DisplayStyle.None; }); break; } }); componentListScroller.Add(item); }
protected void DrawWorldList() { root.Q <MenuBar>("world-table-menu-bar").style.display = DisplayStyle.Flex; root.Q <PageColumn>("world-table").style.display = DisplayStyle.Flex; ColumnScroller scroller = root.Q <ColumnScroller>("world-table-scroller"); scroller.Clear(); bool alternate = false; foreach (World world in ProvenceManager.Instance.worlds.Values) { ListItem item = new ListItem(alternate, true, true); item.name = world.id; item.AddIndent(); ListItemImage icon = item.AddImage(worldTableItemIcon); icon.AddToClassList("icon"); ListItemText nameDisplay = item.AddTextDisplay(world.worldName); nameDisplay.AddToClassList("selectable"); nameDisplay.AddToClassList("world-table-item-name"); item.eventManager.AddListener <MouseClickEvent>(e => { if (e.button != 0) { return; } if (item.ClassListContains("selected")) { eventManager.Raise <SelectKey <World> >(new SelectKey <World>(world)); } else { VisualElement selected = root.Q <VisualElement>(null, "selected"); if (selected != null) { selected.RemoveFromClassList("selected"); } item.AddToClassList("selected"); } }); scroller.Add(item); alternate = !alternate; } }
public static void DrawControl(this FieldControl <Entity> control) { if (control.world == null) { return; } ListItemText input = control.AddEntitySelector(control.world, control.value); control.eventManager.AddListener <ListItemInputChange>(e => { if (e.input != input) { return; } control.value = (Entity)input.text; control.eventManager.Raise <FieldControlUpdated <Entity> >(new FieldControlUpdated <Entity>(control)); }); }
protected void DrawEntityData() { root.Q <ListItemTextInput>("entity-name").value = chosenKeyNameHandle.component.name; ListItemText addButton = root.Q <ListItemText>("add-gameobject-button"); ListItemText selectButton = root.Q <ListItemText>("select-gameobject-button"); ListItemText removeButton = root.Q <ListItemText>("remove-gameobject-button"); if (chosenGameObject != null) { addButton.style.display = DisplayStyle.None; selectButton.style.display = DisplayStyle.Flex; removeButton.style.display = DisplayStyle.Flex; } else { addButton.style.display = DisplayStyle.Flex; selectButton.style.display = DisplayStyle.None; removeButton.style.display = DisplayStyle.None; } }
protected void GenerateTypeList() { List <Type> types = Helpers.GetAllTypesFromBaseType(parameters.baseType, parameters.additionalAssemblies); ScrollView scroller = root.Q <ScrollView>("type-list"); bool alternate = false; foreach (Type type in types) { if (parameters.existingTypes.Contains(type)) { continue; } if (type.IsDefined(typeof(DontDisplayInEditor), false)) { continue; } if (type == parameters.baseType && !parameters.showBase) { continue; } ListItem item = new ListItem(alternate); string typeName = System.Text.RegularExpressions.Regex.Replace(type.Name, @"((?<=\p{Ll})\p{Lu})|((?!\A)\p{Lu}(?>\p{Ll}))", " $0"); ListItemText button = item.AddButton(typeName, false, false, true); scroller.Add(item); alternate = !alternate; button.eventManager.AddListener <MouseClickEvent>(e => { if (e.button != 0) { return; } if (item.ClassListContains("selected")) { if (chosenKey.IsGenericType) { try{ string typeString = root.Q <TextField>("generic-input").text; string asseblyString = root.Q <TextField>("assembly-input").text; if (asseblyString.Equals("")) { asseblyString = chosenKey.Assembly.ToString(); } Type genericType = Type.GetType(typeString + "," + asseblyString); if (genericType != null) { chosenKey = chosenKey.MakeGenericType(genericType); ReturnSelection(); } }catch (Exception ex) { Debug.Log("invalid type or constraint"); Debug.LogWarning(ex); } } else { ReturnSelection(); } } else { scroller.Query <ListItem>(null, "selected").ForEach(current => { current.RemoveFromClassList("selected"); }); item.AddToClassList("selected"); chosenKey = type; } }); } }
protected void DrawEntityList() { ColumnScroller scroller = root.Q <ColumnScroller>("world-editor-entity-scroller"); scroller.Clear(); bool alternate = false; DropDownMenu contextMenu = root.Q <DropDownMenu>("entity-list-context-menu"); foreach (EntityHandle entityHandle in chosenKey.LookUpAllEntities()) { ListItem item = new ListItem(alternate, true, true); item.AddIndent(); item.AddImage(entityIcon).AddToClassList("icon"); ComponentHandle <Name> nameHandle = entityHandle.GetComponent <Name>(); if (nameHandle != null) { item.AddTextDisplay(nameHandle.component.name); } else { item.AddTextDisplay(entityHandle.entity.ToString()); } item.eventManager.AddListener <MouseClickEvent>(e => { switch (e.button) { case 0: ComponentHandle <UnityGameObject> objectHandle = entityHandle.GetComponent <UnityGameObject>(); GameObject entityGO = objectHandle != null ? objectHandle.component.gameObject : null; if (entityGO != null) { Selection.objects = new Object[] { entityGO }; } if (item.ClassListContains("selected")) { EntityEditor.Show(entityHandle); } else { ListItem selected = scroller.Q <ListItem>(null, "selected"); if (selected != null) { selected.RemoveFromClassList("selected"); } item.AddToClassList("selected"); } break; case 1: contextMenu.Show(root, e, true); ListItemText duplicateButton = root.Q <ListItemText>("entity-list-context-menu-duplicate-button"); duplicateButton.eventManager.ClearListeners(); duplicateButton.eventManager.AddListener <MouseClickEvent>(ev => { if (ev.button != 0) { return; } DuplicateEntity(entityHandle); contextMenu.style.display = DisplayStyle.None; }); ListItemText removeButton = root.Q <ListItemText>("entity-list-context-menu-remove-button"); removeButton.eventManager.ClearListeners(); removeButton.eventManager.AddListener <MouseClickEvent>(ev => { if (ev.button != 0) { return; } RemoveEntity(entityHandle); contextMenu.style.display = DisplayStyle.None; }); break; } }); scroller.Add(item); alternate = !alternate; } }
protected void DrawSystemList() { ColumnScroller scroller = root.Q <ColumnScroller>("world-editor-system-scroller"); scroller.Clear(); bool alternate = false; DropDownMenu contextMenu = root.Q <DropDownMenu>("system-list-context-menu"); foreach (string package in chosenKey.systemManager.systemPackages) { ListItem item = new ListItem(alternate, true, true); item.AddIndent(); item.AddImage(packageIcon).AddToClassList("icon"); item.AddTextDisplay(package); scroller.Add(item); item.eventManager.AddListener <MouseClickEvent>(e => { switch (e.button) { case 0: ListItem selected = scroller.Q <ListItem>(null, "selected"); if (selected != null) { selected.RemoveFromClassList("selected"); } item.AddToClassList("selected"); break; case 1: contextMenu.Show(root, e, true); ListItemText removeButton = root.Q <ListItemText>("system-list-context-menu-remove-button"); removeButton.eventManager.ClearListeners(); removeButton.eventManager.AddListener <MouseClickEvent>(ev => { if (ev.button != 0) { return; } chosenKey.systemManager.systemPackages.Remove(package); eventManager.Raise <SetSceneDirtyEvent>(new SetSceneDirtyEvent(EditorSceneManager.GetActiveScene())); eventManager.Raise <DrawColumnEventArgs <World> >(new DrawColumnEventArgs <World>(1)); }); break; } }); alternate = !alternate; } foreach (System.Type systemType in chosenKey.systemManager.GetCurrentSystemTypes()) { ListItem item = new ListItem(alternate, true, true); item.AddIndent(); item.AddImage(systemIcon).AddToClassList("icon"); item.AddTextDisplay(Regex.Replace(systemType.Name, @"((?<=\p{Ll})\p{Lu})|((?!\A)\p{Lu}(?>\p{Ll}))", " $0")); item.eventManager.AddListener <MouseClickEvent>(e => { switch (e.button) { case 0: if (item.ClassListContains("selected")) { Helpers.InvokeGenericMethod(this, "OpenSystemEditor", systemType); } else { ListItem selected = scroller.Q <ListItem>(null, "selected"); if (selected != null) { selected.RemoveFromClassList("selected"); } item.AddToClassList("selected"); } break; case 1: contextMenu.Show(root, e, true); ListItemText removeButton = root.Q <ListItemText>("system-list-context-menu-remove-button"); removeButton.eventManager.ClearListeners(); removeButton.eventManager.AddListener <MouseClickEvent>(ev => { if (ev.button != 0) { return; } Helpers.InvokeGenericMethod(this, "RemoveSystem", systemType); contextMenu.style.display = DisplayStyle.None; }); break; } }); scroller.Add(item); alternate = !alternate; } }
public ListItemText AddEntitySelector(World world, Entity value = null) { ListItemText el = new ListItemText(); el.AddToClassList("list-item-text-display"); el.AddToClassList("hoverable"); el.AddToClassList("selectable"); if (value != null) { el.text = value.ToString(); } EntityHandle handle = world.LookUpEntity((Entity)el.text); if (handle == null) { el.text = ""; eventManager.Raise <ListItemInputChange>(new ListItemInputChange(el)); } el.eventManager.AddListener <MouseClickEvent>(e => { handle = world.LookUpEntity((Entity)el.text); if (handle != null) { ComponentHandle <UnityGameObject> objectHandle = handle.GetComponent <UnityGameObject>(); GameObject go = objectHandle != null ? objectHandle.component.gameObject : null; if (go != null) { Selection.objects = new UnityEngine.Object[] { go } } ; } }); ListItemImage button = new ListItemImage("Assets/Icons/caret-down.png"); button.AddToClassList("hoverable"); button.AddToClassList("selectable"); button.eventManager.AddListener <MouseClickEvent>(e => { EntitySelector.Open(world, args => { el.text = args.value.ToString(); eventManager.Raise <ListItemInputChange>(new ListItemInputChange(el)); }); }); ListItemImage clearButton = new ListItemImage("Assets/Icons/times.png"); clearButton.AddToClassList("hoverable"); clearButton.AddToClassList("selectable"); clearButton.eventManager.AddListener <MouseClickEvent>(e => { if (el.text.Equals("")) { return; } el.text = ""; eventManager.Raise <ListItemInputChange>(new ListItemInputChange(el)); }); this.Add(el); this.Add(button); this.Add(clearButton); return(el); }
protected virtual void DrawKeyList() { keyListScroller.Clear(); bool alternate = false; collection.Sort(); foreach (string key in collection.Keys) { ListItem item = new ListItem(alternate, true, true); item.userData = key; item.AddIndent(true); ListItemImage icon = item.AddImage(keyIcon); icon.AddToClassList("icon"); ListItemTextInput nameInput = item.AddTextField(key); nameInput.AddToClassList("key-list-name-input"); ListItemText nameDisplay = item.AddTextDisplay(key); if (chosenKey == key) { item.AddToClassList("selected"); item.Q <ListItemImage>().SetImage(selectedKeyIcon); } item.eventManager.AddListener <MouseClickEvent>(e => { switch (e.button) { case 0: if (!item.ClassListContains("selected")) { ListItem selected = keyListScroller.Q <ListItem>(null, "selected"); if (selected != null) { selected.RemoveFromClassList("selected"); selected.Q <ListItemImage>().SetImage(keyIcon); } item.AddToClassList("selected"); icon.SetImage(selectedKeyIcon); eventManager.Raise <SelectKey <string> >(new SelectKey <string>(key)); } break; case 1: keyListContextMenu.Show(root, e, true); ListItem editButton = keyListContextMenu.Q <ListItem>("key-list-context-menu-edit-button"); editButton.eventManager.ClearListeners(); editButton.eventManager.AddListener <MouseClickEvent>(ev => { if (ev.button != 0) { return; } nameInput.style.display = DisplayStyle.Flex; nameDisplay.style.display = DisplayStyle.None; keyListContextMenu.style.display = DisplayStyle.None; }); ListItem removeButton = keyListContextMenu.Q <ListItem>("key-list-context-menu-remove-button"); removeButton.eventManager.ClearListeners(); removeButton.eventManager.AddListener <MouseClickEvent>(ev => { if (ev.button != 0) { return; } RemoveManualEntry(key); keyListContextMenu.style.display = DisplayStyle.None; }); break; } }); nameInput.eventManager.AddListener <ListItemInputCommit>(e => { EditManualEntryKey(key, nameInput.value); }); nameInput.eventManager.AddListener <ListItemInputCancel>(e => { nameInput.value = key; nameInput.style.display = DisplayStyle.None; nameDisplay.style.display = DisplayStyle.Flex; }); keyListScroller.Add(item); alternate = !alternate; } //Scroll to selected if exists }