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