예제 #1
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;
            }
        }
        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
        }
예제 #3
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;
            }
        }