diff --git a/scripts/system/html/js/entityList.js b/scripts/system/html/js/entityList.js
index 663acb758c..d01e68cff2 100644
--- a/scripts/system/html/js/entityList.js
+++ b/scripts/system/html/js/entityList.js
@@ -268,8 +268,9 @@ function loaded() {
}));
}
- let enabledContextMenuItems = [];
+ let enabledContextMenuItems = ['Copy', 'Paste', 'Duplicate'];
if (entitiesByID[entityID] && !entitiesByID[entityID].locked) {
+ enabledContextMenuItems.push('Cut');
enabledContextMenuItems.push('Rename');
enabledContextMenuItems.push('Delete');
}
diff --git a/scripts/system/libraries/entityList.js b/scripts/system/libraries/entityList.js
index d3d1d76725..3d73f2f115 100644
--- a/scripts/system/libraries/entityList.js
+++ b/scripts/system/libraries/entityList.js
@@ -271,12 +271,15 @@ EntityListTool = function(shouldUseEditTabletApp) {
filterInView = data.filterInView === true;
} else if (data.type === "radius") {
searchRadius = data.radius;
+ } else if (data.type === "cut") {
+ cutSelectedEntities();
} else if (data.type === "copy") {
- Window.alert("Copy is not yet implemented.");
+ copySelectedEntities();
} else if (data.type === "paste") {
- Window.alert("Paste is not yet implemented.");
+ pasteEntities();
} else if (data.type === "duplicate") {
- Window.alert("Duplicate is not yet implemented.");
+ SelectionManager.duplicateSelection();
+ that.sendUpdate();
} else if (data.type === "rename") {
Entities.editEntity(data.entityID, {name: data.name});
// make sure that the name also gets updated in the properties window