diff --git a/demos/blockfactory/blocks.js b/demos/blockfactory/blocks.js
index d4ea11652..6dcd00617 100644
--- a/demos/blockfactory/blocks.js
+++ b/demos/blockfactory/blocks.js
@@ -52,6 +52,12 @@ Blockly.Blocks['factory_base'] = {
});
this.appendDummyInput()
.appendField(dropdown, 'CONNECTIONS');
+ this.appendValueInput('TOOLTIP')
+ .setCheck('String')
+ .appendField('tooltip');
+ this.appendValueInput('HELPURL')
+ .setCheck('String')
+ .appendField('help url');
this.appendValueInput('COLOUR')
.setCheck('Colour')
.appendField('colour');
diff --git a/demos/blockfactory/factory.js b/demos/blockfactory/factory.js
index 97f5ff946..974cd8a7e 100644
--- a/demos/blockfactory/factory.js
+++ b/demos/blockfactory/factory.js
@@ -65,7 +65,18 @@ BlockFactory.oldDir = null;
* unmovable, undeletable factory_base block.
*/
BlockFactory.STARTER_BLOCK_XML_TEXT = '';
+ 'deletable="false" movable="false">' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '230' +
+ '';
/**
* Change the language code format.
diff --git a/demos/blockfactory/factory_utils.js b/demos/blockfactory/factory_utils.js
index bdfdeee56..89495d4ce 100644
--- a/demos/blockfactory/factory_utils.js
+++ b/demos/blockfactory/factory_utils.js
@@ -250,8 +250,10 @@ FactoryUtils.formatJson_ = function(blockType, rootBlock) {
var hue = parseInt(colourBlock.getFieldValue('HUE'), 10);
JS.colour = hue;
}
- JS.tooltip = '';
- JS.helpUrl = 'http://www.example.com/';
+
+ JS.tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock);
+ JS.helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock);
+
return JSON.stringify(JS, null, ' ');
};
@@ -334,8 +336,11 @@ FactoryUtils.formatJavaScript_ = function(blockType, rootBlock, workspace) {
code.push(' this.setColour(' + hue + ');');
}
}
- code.push(" this.setTooltip('');");
- code.push(" this.setHelpUrl('http://www.example.com/');");
+
+ var tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock);
+ var helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock);
+ code.push(" this.setTooltip('" + tooltip + "');");
+ code.push(" this.setHelpUrl('" + helpUrl + "');");
code.push(' }');
code.push('};');
return code.join('\n');
@@ -951,3 +956,31 @@ FactoryUtils.savedBlockChanges = function(blockLibraryController) {
}
return false;
};
+
+/**
+ * Given the root block of the factory, return the tooltip specified by the user
+ * or the empty string if no tooltip is found.
+ * @param {!Blockly.Block} rootBlock Factory_base block.
+ * @return {string} The tooltip for the generated block, or the empty string.
+ */
+FactoryUtils.getTooltipFromRootBlock_ = function(rootBlock) {
+ var tooltipBlock = rootBlock.getInputTargetBlock('TOOLTIP');
+ if (tooltipBlock && !tooltipBlock.disabled) {
+ return tooltipBlock.getFieldValue('TEXT');
+ }
+ return '';
+};
+
+/**
+ * Given the root block of the factory, return the help url specified by the
+ * user or the empty string if no tooltip is found.
+ * @param {!Blockly.Block} rootBlock Factory_base block.
+ * @return {string} The help url for the generated block, or the empty string.
+ */
+FactoryUtils.getHelpUrlFromRootBlock_ = function(rootBlock) {
+ var helpUrlBlock = rootBlock.getInputTargetBlock('HELPURL');
+ if (helpUrlBlock && !helpUrlBlock.disabled) {
+ return helpUrlBlock.getFieldValue('TEXT');
+ }
+ return '';
+};