or
private
void
ContextMenuSubscribe()
{
this
.radRichTextBox.ContextMenu =
new
Telerik.Windows.Controls.RichTextBoxUI.ContextMenu();
ContextMenu contextMenu = (ContextMenu)
this
.radRichTextBox.ContextMenu;
contextMenu.Showing +=
this
.ContextMenu_Showing;
}
private
void
ContextMenu_Showing(
object
sender, ContextMenuEventArgs e)
{
#region Discontinue Product Menu Item
// First check the context - if last selected annotation is product and user permissions
if
(Properties.Settings.Default.SystemUserPermissions.ProductsCanDiscontinue ==
true
&& !(
this
.radRichTextBox.Document.Selection.IsEmpty)
&& RadDocumentExtensions.GetLastSelectedAnnotationMarker(
this
.radRichTextBox.Document)
is
SemanticRangeStart)
{
//Get the selected annotations
List<SemanticRangeStart> products = RadDocumentExtensions.GetSelectedAnnotationsRangeStarts<SemanticRangeStart>(
this
.radRichTextBox.Document);
//Check Product Count is greater than 0
if
(products !=
null
&& products.Count > 0)
{
//Add menu item to data context
RadMenuItem discontinueProductMenuItem =
new
RadMenuItem()
{
Header =
"Discontinue Product"
,
Icon =
new
System.Windows.Controls.Image() { Source =
new
BitmapImage(
new
Uri(
"Icons/Spec-Editor-Menu/block.png"
, UriKind.Relative)) },
Tag = products[products.Count - 1]
//Get last product item in selection
};
discontinueProductMenuItem.Click +=
this
.DiscontinueProductMenuItem_Click;
ContextMenuGroup customContextMenuGroup =
new
ContextMenuGroup();
customContextMenuGroup.Add(discontinueProductMenuItem);
e.ContextMenuGroupCollection.Add(customContextMenuGroup);
}
}
#endregion
#region Product Pricing Menu Item
// First check the context - if selected annotation is end product and user permissions
if
(Properties.Settings.Default.SystemUserPermissions.OrderCanEdit ==
true
&& !(
this
.radRichTextBox.Document.Selection.IsEmpty) &&
RadDocumentExtensions.GetLastSelectedAnnotationMarker(
this
.radRichTextBox.Document)
is
SemanticRangeStart)
{
//Get the selected annotations
List<SemanticRangeStart> products = RadDocumentExtensions.GetSelectedAnnotationsRangeStarts<SemanticRangeStart>(
this
.radRichTextBox.Document);
//Checked the last selected item is an end item
//if (products.Count >= 0 && products[products.Count - 1].Product.HasChild == false)
//{
//Add menu item to data context
RadMenuItem addPriceMenuItem =
new
RadMenuItem()
{
Header =
"Set Price"
,
Icon =
new
System.Windows.Controls.Image() { Source =
new
BitmapImage(
new
Uri(
"Icons/Spec-Editor-Menu/sterling_pound_currency_50.png"
, UriKind.Relative)) },
Tag = products[products.Count - 1]
};
addPriceMenuItem.Click +=
this
.SetPriceMenuItem_Click;
ContextMenuGroup customContextMenuGroup =
new
ContextMenuGroup();
customContextMenuGroup.Add(addPriceMenuItem);
e.ContextMenuGroupCollection.Add(customContextMenuGroup);
//}
}
#endregion
#region Add New Item To Database Menu Item
//Check Conditions
if
(Properties.Settings.Default.SystemUserPermissions.ProductsCanAdd ==
true
&&
this
.radRichTextBox.Document.Selection.IsEmpty && RadDocumentAutoComplete.IsPositionBetweenDefinedAnnotations(
this
.radRichTextBox.Document.CaretPosition) ==
false
)
{
//Check if text exists at caret position
string
text = RadDocumentExtensions.GetSpanBoxText(
this
.radRichTextBox.Document.CaretPosition);
if
(!String.IsNullOrWhiteSpace(text))
{
text.Trim();
//Create New Menu Item
RadMenuItem addNewItemToDatabase =
new
RadMenuItem()
{
Header =
"Add New Item"
,
Icon =
new
System.Windows.Controls.Image() { Source =
new
BitmapImage(
new
Uri(
"Icons/Spec-Editor-Menu/Database-Add-48.png"
, UriKind.Relative)) }
};
addNewItemToDatabase.Click +=
this
.AddNewItemToDatabaseMenuItem_Click;
ContextMenuGroup customContextMenuGroup =
new
ContextMenuGroup();
customContextMenuGroup.Add(addNewItemToDatabase);
e.ContextMenuGroupCollection.Add(customContextMenuGroup);
}
}
#endregion
}