Remove clipboard functionality.

This commit is contained in:
Sean Lip
2016-11-30 15:31:19 -08:00
parent 69d4ebb6dd
commit 4c30b91bc6
3 changed files with 2 additions and 116 deletions

View File

@@ -27,10 +27,6 @@ blocklyApp.ClipboardService = ng.core.Class({
blocklyApp.NotificationsService, blocklyApp.UtilsService,
blocklyApp.AudioService,
function(_notificationsService, _utilsService, _audioService) {
this.clipboardBlockXml_ = null;
this.clipboardBlockPreviousConnection_ = null;
this.clipboardBlockNextConnection_ = null;
this.clipboardBlockOutputConnection_ = null;
this.markedConnection_ = null;
this.notificationsService = _notificationsService;
this.utilsService = _utilsService;
@@ -44,15 +40,6 @@ blocklyApp.ClipboardService = ng.core.Class({
Blockly.OPPOSITE_TYPE[blockConnection.type] == connection.type &&
connection.checkType_(blockConnection));
},
isCompatibleWithClipboard: function(connection) {
var previousConnection = this.clipboardBlockPreviousConnection_;
var nextConnection = this.clipboardBlockNextConnection_;
var outputConnection = this.clipboardBlockOutputConnection_;
return Boolean(
this.areConnectionsCompatible_(connection, previousConnection) ||
this.areConnectionsCompatible_(connection, nextConnection) ||
this.areConnectionsCompatible_(connection, outputConnection));
},
getMarkedConnectionBlock: function() {
if (!this.markedConnection_) {
return null;
@@ -102,48 +89,6 @@ blocklyApp.ClipboardService = ng.core.Class({
this.markedConnection_ = connection;
this.notificationsService.speak(Blockly.Msg.ADDED_LINK_MSG);
},
cut: function(block) {
this.copy(block);
block.dispose(true);
},
copy: function(block) {
this.clipboardBlockXml_ = Blockly.Xml.blockToDom(block);
Blockly.Xml.deleteNext(this.clipboardBlockXml_);
this.clipboardBlockPreviousConnection_ = block.previousConnection;
this.clipboardBlockNextConnection_ = block.nextConnection;
this.clipboardBlockOutputConnection_ = block.outputConnection;
},
isClipboardEmpty: function() {
return !this.clipboardBlockXml_;
},
pasteFromClipboard: function(inputConnection) {
var connection = inputConnection;
// If the connection is a 'previousConnection' and that connection is
// already joined to something, use the 'nextConnection' of the
// previous block instead in order to do an insertion.
if (inputConnection.type == Blockly.PREVIOUS_STATEMENT &&
inputConnection.isConnected()) {
connection = inputConnection.targetConnection;
}
var reconstitutedBlock = Blockly.Xml.domToBlock(blocklyApp.workspace,
this.clipboardBlockXml_);
switch (connection.type) {
case Blockly.NEXT_STATEMENT:
connection.connect(reconstitutedBlock.previousConnection);
break;
case Blockly.PREVIOUS_STATEMENT:
connection.connect(reconstitutedBlock.nextConnection);
break;
default:
connection.connect(reconstitutedBlock.outputConnection);
}
this.audioService.playConnectSound();
this.notificationsService.speak(
this.utilsService.getBlockDescription(reconstitutedBlock) + ' ' +
Blockly.Msg.PASTED_BLOCK_FROM_CLIPBOARD_MSG);
return reconstitutedBlock.id;
},
pasteToMarkedConnection: function(block) {
var xml = Blockly.Xml.blockToDom(block);
var reconstitutedBlock = Blockly.Xml.domToBlock(

View File

@@ -266,46 +266,6 @@ blocklyApp.TreeService = ng.core.Class({
deleteBlockFunc, treeId, nextActiveDesc.id);
}
},
cutBlock_: function(block, blockRootNode) {
var blockDescription = this.utilsService.getBlockDescription(block);
var that = this;
this.removeBlockAndSetFocus(block, blockRootNode, function() {
that.clipboardService.cut(block);
});
setTimeout(function() {
if (that.utilsService.isWorkspaceEmpty()) {
that.notificationsService.speak(
blockDescription + ' cut. Workspace is empty.');
} else {
that.notificationsService.speak(
blockDescription + ' cut. Now on workspace.');
}
});
},
copyBlock_: function(block) {
var blockDescription = this.utilsService.getBlockDescription(block);
this.clipboardService.copy(block);
this.notificationsService.speak(
blockDescription + ' ' + Blockly.Msg.COPIED_BLOCK_MSG);
},
pasteToConnection: function(block, connection) {
if (this.clipboardService.isClipboardEmpty()) {
return;
}
var destinationTreeId = this.getTreeIdForBlock(
connection.getSourceBlock().id);
this.clearActiveDesc(destinationTreeId);
var newBlockId = this.clipboardService.pasteFromClipboard(connection);
// Invoke a digest cycle, so that the DOM settles.
var that = this;
setTimeout(function() {
that.focusOnBlock(newBlockId);
});
},
showBlockOptionsModal: function(block, blockRootNode) {
var that = this;
var actionButtonsInfo = [];
@@ -430,28 +390,12 @@ blocklyApp.TreeService = ng.core.Class({
return;
}
if (e.altKey) {
if (e.altKey || e.ctrlKey) {
// Do not intercept combinations such as Alt+Home.
return;
}
if (e.ctrlKey) {
var blockRootNode = this.getCurrentBlockRootNode_(activeDesc);
var block = this.getBlockFromRootNode_(blockRootNode);
if (e.keyCode == 88) {
// Cut block.
this.cutBlock_(block, blockRootNode);
} else if (e.keyCode == 67) {
// Copy block.
this.copyBlock_(block);
} else if (e.keyCode == 86) {
// Paste block, if possible.
var targetConnection =
e.shiftKey ? block.previousConnection : block.nextConnection;
this.pasteToConnection(block, targetConnection);
}
} else if (document.activeElement.tagName == 'INPUT') {
if (document.activeElement.tagName == 'INPUT') {
// For input fields, only Esc and Tab keystrokes are handled specially.
if (e.keyCode == 27 || e.keyCode == 9) {
// For Esc and Tab keys, the focus is removed from the input field.

View File

@@ -198,8 +198,5 @@ blocklyApp.WorkspaceTreeComponent = ng.core.Component({
generateAriaLabelledByAttr: function(mainLabel, secondLabel) {
return this.utilsService.generateAriaLabelledByAttr(
mainLabel, secondLabel);
},
isCompatibleWithClipboard: function(connection) {
return this.clipboardService.isCompatibleWithClipboard(connection);
}
});