void Initialize()
        {
            contextMenu = new ContextMenu();
            panelContextMenu = new ContextMenu();
            contextMenu.Opened += contextMenu_Opened;
            // Context menu:
            addComponentItem = EditorUtils.CreateMenuItem("Add Component", (ImageSource)FindResource("ComponentIcon"));
            MenuItem createObjectItem = EditorUtils.CreateMenuItem("Create New Object...", (ImageSource)FindResource("GameObjectIcon_Sprite"));
            MenuItem panelCreateObjectItem = EditorUtils.CreateMenuItem("Create New Object...", (ImageSource)FindResource("GameObjectIcon_Sprite"));
            MenuItem addFromStateItem = EditorUtils.CreateMenuItem("Add From State...", null);
            MenuItem panelAddFromStateItem = EditorUtils.CreateMenuItem("Add From State...", null);
            saveStateItem = EditorUtils.CreateMenuItem("Save State...", (ImageSource)FindResource("SaveIcon"));
            MenuItem cutItem = EditorUtils.CreateMenuItem("Cut", (ImageSource)FindResource("CutIcon"));
            MenuItem copyItem = EditorUtils.CreateMenuItem("Copy", (ImageSource)FindResource("CopyIcon"));
            MenuItem pasteItem = EditorUtils.CreateMenuItem("Paste", (ImageSource)FindResource("PasteIcon"));
            MenuItem panelPasteItem = EditorUtils.CreateMenuItem("Paste", (ImageSource)FindResource("PasteIcon"));
            MenuItem deleteItem = EditorUtils.CreateMenuItem("Delete", null);
            renameItem = EditorUtils.CreateMenuItem("Rename", (ImageSource)FindResource("RenameIcon"));
            moveUpItem = EditorUtils.CreateMenuItem("Move Up", (ImageSource)FindResource("MoveUpIcon"));
            moveDownItem = EditorUtils.CreateMenuItem("Move Down", (ImageSource)FindResource("MoveDownIcon"));

            contextMenu.Items.Add(addComponentItem);
            contextMenu.Items.Add(createObjectItem);
            contextMenu.Items.Add(new Separator());
            contextMenu.Items.Add(addFromStateItem);
            contextMenu.Items.Add(saveStateItem);
            contextMenu.Items.Add(new Separator());
            contextMenu.Items.Add(cutItem);
            contextMenu.Items.Add(copyItem);
            contextMenu.Items.Add(pasteItem);
            contextMenu.Items.Add(deleteItem);
            contextMenu.Items.Add(new Separator());
            contextMenu.Items.Add(renameItem);
            //contextMenu.Items.Add(new Separator());
            //contextMenu.Items.Add(moveUpItem);
            //contextMenu.Items.Add(moveDownItem);

            panelContextMenu.Items.Add(panelCreateObjectItem);
            panelContextMenu.Items.Add(new Separator());
            panelContextMenu.Items.Add(panelAddFromStateItem);
            panelContextMenu.Items.Add(new Separator());
            panelContextMenu.Items.Add(panelPasteItem);

            createObjectItem.Click += createObjectItem_Click;
            addFromStateItem.Click += addFromStateItem_Click;
            renameItem.Click += renameItem_Click;
            saveStateItem.Click += saveStateItem_Click;
            cutItem.Click += cutItem_Click;
            copyItem.Click += copyItem_Click;
            pasteItem.Click += pasteItem_Click;
            deleteItem.Click += deleteItem_Click;
            moveUpItem.Click += moveUpItem_Click;
            moveDownItem.Click += moveDownItem_Click;

            panelCreateObjectItem.Click += createObjectItem_Click;
            panelAddFromStateItem.Click += addFromStateItem_Click;
            panelPasteItem.Click += panelPasteItem_Click;
        }
        private void SearchAndAttachInfo(GibboMenuItem item, Type type)
        {
            System.Reflection.MemberInfo info;
            object[] attributes;

            info = type;
            attributes = info.GetCustomAttributes(typeof(Info), true);

            if (attributes.Count() > 0)
                item.ToolTip = (attributes[0] as Info).Value.Replace("\\n", Environment.NewLine);
        }