Exemple #1
0
        private void MouseUpHandler(object sender, MouseEventArgs e)
        {
            if (!this.IsHitTestVisible)
            {
                return;
            }

            var contextMenu = this.ContextMenu;

            if (contextMenu is not null &&
                contextMenu.IsOpen)
            {
                // close current context menu
                contextMenu.IsOpen = false;
                this.ContextMenu   = null;
                return;
            }

            if (lastContextMenuCloseFrameTime + 0.2 >= Api.Client.Core.ClientRealTime)
            {
                // just closed a context menu
                return;
            }

            var viewModel  = (FactionMemberViewEntry)this.DataContext;
            var memberName = viewModel.Name;

            if (viewModel.IsCurrentPlayerEntry)
            {
                return;
            }

            // create new context menu
            contextMenu = new ContextMenu();
            var contextMenuItems = contextMenu.Items;

            contextMenuItems.Add(
                new MenuItem()
            {
                Header  = CoreStrings.Chat_MessageMenu_CopyName,
                Command = new ActionCommand(this.ExecuteCommandCopyName)
            });

            contextMenuItems.Add(
                new MenuItem()
            {
                Header  = CoreStrings.Chat_MessageMenu_PrivateMessage,
                Command = new ActionCommand(this.ExecuteCommandOpenPrivateChat)
            });

            if (FactionSystem.ClientHasAccessRight(FactionMemberAccessRights.SetMemberRole) &&
                memberName != ClientCurrentCharacterHelper.Character.Name &&
                memberName != FactionSystem.ClientCurrentFactionLeaderName)
            {
                contextMenuItems.Add(
                    new MenuItem()
                {
                    Header  = CoreStrings.Faction_SetRole,
                    Command = new ActionCommand(
                        () => WindowSetMemberRole.Open(memberName))
                });
            }

            if (FactionSystem.ClientHasAccessRight(FactionMemberAccessRights.RemoveMembers) &&
                memberName != ClientCurrentCharacterHelper.Character.Name &&
                memberName != FactionSystem.ClientCurrentFactionLeaderName)
            {
                contextMenuItems.Add(
                    new MenuItem()
                {
                    Header  = CoreStrings.Faction_RemoveMember,
                    Command = new ActionCommand(
                        () => FactionSystem.ClientOfficerRemoveFactionMember(memberName))
                });
            }

            this.ContextMenu = contextMenu;

            contextMenu.Placement = PlacementMode.Relative;
            var target = sender as UIElement;

            contextMenu.PlacementTarget = target;
            var position = e.GetPosition(target);

            contextMenu.HorizontalOffset = position.X;
            contextMenu.VerticalOffset   = position.Y;
            contextMenu.IsOpen           = true;
            contextMenu.Closed          += this.ContextMenuClosedHandler;
        }