Exemple #1
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        //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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
                }
            }
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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));
            });
        }
Exemple #13
0
        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;
            }
        }
Exemple #14
0
        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;
                    }
                });
            }
        }
Exemple #15
0
        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;
            }
        }
Exemple #16
0
        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;
            }
        }
Exemple #17
0
        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
        }