// The window function. This works just like ingame GUI.Window
        private void DrawWindow(int unusedWindowID)
        {
            _searchText = GUILayout.TextField(_searchText, GUI.skin.FindStyle("ToolbarSeachTextField"), GUILayout.Height(50));
            var typeNames = nodeTypes.Select(x => new { type = x, name = GetNodeMenuName(x), tags = GetNodeMenuTags(x) })
                            .Where(x => !string.IsNullOrEmpty(x.tags.Union(new[] { x.name }).FirstOrDefault(tag => tag.ToLower().Contains(_searchText.ToLower()))))
                            .ToArray();

            foreach (var availableNodeType in typeNames)
            {
                if (GUILayout.Button(Path.GetFileName(availableNodeType.name), GUILayout.Height(50)))
                {
                    graphEditor.CreateNode(availableNodeType.type, Vector2.zero);
                    currentActivity = NodeActivity.Idle;
                    Repaint();
                }
            }

            if (GUILayout.Button("Preferences"))
            {
                NodeEditorWindow.OpenPreferences();
                currentActivity = NodeActivity.Idle;
                Repaint();
            }
            GUI.DragWindow();
        }