in dev/CommandBarFlyout/TextCommandBarFlyout.cpp [931:1132]
winrt::ICommandBarElement TextCommandBarFlyout::GetButton(TextControlButtons textControlButton)
{
const auto foundButton = m_buttons.find(textControlButton);
if (foundButton != m_buttons.end())
{
return foundButton->second;
}
else
{
switch (textControlButton)
{
case TextControlButtons::Cut:
{
winrt::AppBarButton button;
const auto executeFunc = [this]() { ExecuteCutCommand(); };
if (SharedHelpers::IsStandardUICommandAvailable())
{
InitializeButtonWithUICommand(button, winrt::StandardUICommand(winrt::StandardUICommandKind::Cut), executeFunc);
}
else
{
InitializeButtonWithProperties(
button,
SR_TextCommandLabelCut,
winrt::Symbol::Cut,
SR_TextCommandKeyboardAcceleratorKeyCut,
SR_TextCommandDescriptionCut,
executeFunc);
}
m_buttons[TextControlButtons::Cut] = button;
return button;
}
case TextControlButtons::Copy:
{
winrt::AppBarButton button;
const auto executeFunc = [this]() { ExecuteCopyCommand(); };
if (SharedHelpers::IsStandardUICommandAvailable())
{
InitializeButtonWithUICommand(button, winrt::StandardUICommand(winrt::StandardUICommandKind::Copy), executeFunc);
}
else
{
InitializeButtonWithProperties(
button,
SR_TextCommandLabelCopy,
winrt::Symbol::Copy,
SR_TextCommandKeyboardAcceleratorKeyCopy,
SR_TextCommandDescriptionCopy,
executeFunc);
}
m_buttons[TextControlButtons::Copy] = button;
return button;
}
case TextControlButtons::Paste:
{
winrt::AppBarButton button;
const auto executeFunc = [this]() { ExecutePasteCommand(); };
if (SharedHelpers::IsStandardUICommandAvailable())
{
InitializeButtonWithUICommand(button, winrt::StandardUICommand(winrt::StandardUICommandKind::Paste), executeFunc);
}
else
{
InitializeButtonWithProperties(
button,
SR_TextCommandLabelPaste,
winrt::Symbol::Paste,
SR_TextCommandKeyboardAcceleratorKeyPaste,
SR_TextCommandDescriptionPaste,
executeFunc);
}
m_buttons[TextControlButtons::Paste] = button;
return button;
}
// Bold, Italic, and Underline don't have command library commands associated with them,
// so we'll just unconditionally initialize them with properties.
case TextControlButtons::Bold:
{
winrt::AppBarToggleButton button;
InitializeButtonWithProperties(
button,
SR_TextCommandLabelBold,
winrt::Symbol::Bold,
SR_TextCommandKeyboardAcceleratorKeyBold,
SR_TextCommandDescriptionBold,
[this]() { ExecuteBoldCommand(); });
m_buttons[TextControlButtons::Bold] = button;
return button;
}
case TextControlButtons::Italic:
{
winrt::AppBarToggleButton button;
InitializeButtonWithProperties(
button,
SR_TextCommandLabelItalic,
winrt::Symbol::Italic,
SR_TextCommandKeyboardAcceleratorKeyItalic,
SR_TextCommandDescriptionItalic,
[this]() { ExecuteItalicCommand(); });
m_buttons[TextControlButtons::Italic] = button;
return button;
}
case TextControlButtons::Underline:
{
winrt::AppBarToggleButton button;
InitializeButtonWithProperties(
button,
SR_TextCommandLabelUnderline,
winrt::Symbol::Underline,
SR_TextCommandKeyboardAcceleratorKeyUnderline,
SR_TextCommandDescriptionUnderline,
[this]() { ExecuteUnderlineCommand(); });
m_buttons[TextControlButtons::Underline] = button;
return button;
}
case TextControlButtons::Undo:
{
winrt::AppBarButton button;
const auto executeFunc = [this]() { ExecuteUndoCommand(); };
if (SharedHelpers::IsStandardUICommandAvailable())
{
InitializeButtonWithUICommand(button, winrt::StandardUICommand(winrt::StandardUICommandKind::Undo), executeFunc);
}
else
{
InitializeButtonWithProperties(
button,
SR_TextCommandLabelUndo,
winrt::Symbol::Undo,
SR_TextCommandKeyboardAcceleratorKeyUndo,
SR_TextCommandDescriptionUndo,
executeFunc);
}
m_buttons[TextControlButtons::Undo] = button;
return button;
}
case TextControlButtons::Redo:
{
winrt::AppBarButton button;
const auto executeFunc = [this]() { ExecuteRedoCommand(); };
if (SharedHelpers::IsStandardUICommandAvailable())
{
InitializeButtonWithUICommand(button, winrt::StandardUICommand(winrt::StandardUICommandKind::Redo), executeFunc);
}
else
{
InitializeButtonWithProperties(
button,
SR_TextCommandLabelRedo,
winrt::Symbol::Redo,
SR_TextCommandKeyboardAcceleratorKeyRedo,
SR_TextCommandDescriptionRedo,
executeFunc);
}
m_buttons[TextControlButtons::Redo] = button;
return button;
}
case TextControlButtons::SelectAll:
{
winrt::AppBarButton button;
const auto executeFunc = [this]() { ExecuteSelectAllCommand(); };
if (SharedHelpers::IsStandardUICommandAvailable())
{
auto command = winrt::StandardUICommand(winrt::StandardUICommandKind::SelectAll);
command.IconSource(nullptr);
InitializeButtonWithUICommand(button, command, executeFunc);
}
else
{
InitializeButtonWithProperties(
button,
SR_TextCommandLabelSelectAll,
SR_TextCommandKeyboardAcceleratorKeySelectAll,
SR_TextCommandDescriptionSelectAll,
executeFunc);
}
m_buttons[TextControlButtons::SelectAll] = button;
return button;
}
default:
MUX_ASSERT(false);
return nullptr;
}
}
}