Oct 04, 2017, 2:00 PM
[FIXED] [#1559] [4.5.0] Desktop - disable/enable context menu items
Hello support team,
I added a new item to the desktop context menu and I want to disable / enable it under certain condition. Unfortunately, I am not successful. What am I doing wrong?
1. Right-click to open a context menu -> menu item is enabled
2. Delete shortcuts (from start menu)
3. Right-click to open a context menu again -> menu item is still enabled
Thank you for your help.
Dan
I added a new item to the desktop context menu and I want to disable / enable it under certain condition. Unfortunately, I am not successful. What am I doing wrong?
@using Ext.Net;
@using Ext.Net.MVC;
@{
ViewBag.Title = "Desktop Drag & Drop Example - Disable Context Menu Items";
Layout = null;
var X = Html.X();
List<MenuItem> startMenu = new List<Ext.Net.MenuItem>();
foreach (var menuEntry in new[]
{
new { id = "EU", text = "European Union", icon = Icon.FlagEuropeanunion },
new { id = "US", text = "United States", icon = Icon.FlagUs }
}) {
startMenu.Add(new MenuItem()
{
ID = menuEntry.id,
Icon = menuEntry.icon,
Text = menuEntry.text
});
}
}
<!DOCTYPE html>
<html>
<head>
<title>Ext.NET MVC Test Case</title>
<style>
.x-default-shortcut {
background: url("http://www.nlm.cz/img/logoNewlink.png");
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
</style>
<script type="text/javascript">
function desktopReady() {
createModule("EU");
createModule("US");
var itemArrangeShortcuts = Ext.create('Ext.menu.Item', {
id: "_nelisDestop_NewContextMenuItem",
text: "Default shortcuts position",
disabled: true,
listeners: {
click: function () { App._nelisDesktop.desktop.arrangeShortcuts(true); }
}
});
App._nelisDesktop.desktop.contextMenu.add(Ext.create("Ext.menu.Separator"));
App._nelisDesktop.desktop.contextMenu.add(itemArrangeShortcuts);
App._nelisDesktop.desktop.contextMenu.addListener("beforeshow", function () {
Ext.getCmp("_nelisDestop_NewContextMenuItem").setDisabled(App._nelisDesktop.desktop.shortcuts.getCount() === 0);
});
}
var createModule = function (moduleId) {
var item = Ext.getCmp(moduleId);
var newModuleId = "dynModule_" + moduleId;
App._nelisDesktop.addModule(Ext.create("Ext.ux.desktop.Module", {
id: newModuleId,
shortcut: { name: item.text, module: newModuleId, IconCls: "x-default-shortcut" },
autoRun: true
}));
}
var removeModule = function (title) {
var moduleId = "dynModule_" + (title == "EuropeanUnion" ? "EU" : "US");
Ext.net.Desktop.removeModule(moduleId);
}
</script>
</head>
<body>
@X.ResourceManager()
@(X.Desktop()
.ID("_nelisDesktop")
.Listeners(l => l.Ready.Fn = "desktopReady")
.DesktopConfig(
X.DesktopConfig()
.ID("_nelisDesktop_Area")
.ShortcutDefaults(defaults => defaults.IconCls = "x-default-shortcut")
.SortShortcuts(true)
.ShortcutDragSelector(true)
)
.StartMenu(
X.DesktopStartMenu()
.ID("_nelisDesktop_StartMenu")
.Title("Allegro Desktop")
.Icon(Icon.Application)
.MenuItems(startMenu)
.Width(400)
.Height(150)
.ToolConfig(
X.Toolbar()
.Width(200)
.Items(
X.Button()
.Icon(Icon.FlagEuropeanunion)
.Text("Remove EU Shortcut")
.OnClientClick("removeModule(\"EuropeanUnion\")"),
X.Button()
.Icon(Icon.FlagUs)
.Text("Remove US Shortcut")
.OnClientClick("removeModule(\"UnitedStates\")")
)
)
)
.Modules(
X.DesktopModule().ModuleID("_nelisDesktop_EmptyModule") // Ext.ux.desktop.App.getModule() does not expect that no modules exist => create at least a fake one
)
)
</body>
</html>
Steps to reproduce this behaviour:1. Right-click to open a context menu -> menu item is enabled
2. Delete shortcuts (from start menu)
3. Right-click to open a context menu again -> menu item is still enabled
Thank you for your help.
Dan
Last edited by fabricio.murta; Oct 06, 2017 at 12:26 AM.