Example #1
0
        public void Add(ItemDefinition itemDefinition)
        {
            var newLabel = new ItemEntryEditor(itemDefinition);

            newLabel.OnEnable();
            m_items.Add(newLabel);
        }
Example #2
0
        private void OnSelectionChanged(ItemEntryEditor newSelection)
        {
            if (newSelection != Selected)
            {
                Selected?.Deselect();
                Selected = newSelection;
                newSelection.Select();

                Window.Repaint();
                SelectionChanged?.Invoke(Selected);
            }
        }
Example #3
0
        private void ContextMenu(ItemEntryEditor itemEntryEditor)
        {
            GUI.FocusControl(null);
            var targetLabel = itemEntryEditor;

            void Save() => ItemDatabase.Update(targetLabel.ItemDefinition);

            void Reset()
            {
                var origin = ItemDatabase.Fetch(targetLabel.ItemDefinition.Id);

                targetLabel.Set(origin);
                SelectionChanged?.Invoke(targetLabel);
            }

            void Delete()
            {
                ItemDatabase.DeleteById(targetLabel.ItemDefinition.Id);
                m_items.Remove(targetLabel);
                SelectionChanged?.Invoke(null);
            }

            void Duplicate()
            {
                //TODO DELETE DEBUG CODE
                for (int i = 0; i < 1000; i++)
                {
                    var copy =
                        (ItemDefinition)
                        Activator.CreateInstance(targetLabel.ItemDefinition.GetType(),
                                                 targetLabel.ItemDefinition);
                    copy.Id          = ObjectId.GenerateNewId();
                    copy.DisplayName = "copy_" + copy.DisplayName;
                    var newLabel = new ItemEntryEditor(copy);
                    m_items.Add(newLabel);

                    OnSelectionChanged(newLabel);
                }
            }

            var menu = new GenericMenu();

            menu.AddDisabledItem(new GUIContent(targetLabel.ItemName, "Selected Item"));
            menu.AddItem(new GUIContent("Save", "Saved to Database."), false, Save);
            menu.AddItem(new GUIContent("Reset", "Reset to Origin."), false, Reset);
            menu.AddItem(new GUIContent("Duplicate", "Creates a Copy.Not saved to Database."),
                         false,
                         Duplicate);
            menu.AddItem(new GUIContent("Delete", "Delete from Database"), false, Delete);
            menu.ShowAsContext();
            m_event.Use();
        }
Example #4
0
        private void UpdateSelection(ItemEntryEditor itemEntryEditor, EditorWindow window)
        {
            var rect         = GUILayoutUtility.GetLastRect();
            var pos          = Event.current.mousePosition;
            var containsRect = rect.Contains(pos);

            if (LeftMousePressed && containsRect)
            {
                OnSelectionChanged(itemEntryEditor);
            }

            if (RightMousePressed && containsRect)
            {
                ContextMenu(itemEntryEditor);
            }
        }