From 23ede691f37740d0a6212bf1f355e9d0c87d7466 Mon Sep 17 00:00:00 2001 From: "Xiaoyang Yu (Max)" Date: Tue, 28 Aug 2012 15:17:36 +0800 Subject: [PATCH 1/4] [Property View] Remain focus when press tab key --- src/js/composer.js | 6 ++++++ src/js/views/property.js | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/js/composer.js b/src/js/composer.js index 7f85a8c7..99e40ae8 100644 --- a/src/js/composer.js +++ b/src/js/composer.js @@ -803,6 +803,12 @@ $(function() { var inputs = targets.find('input'); $(inputs).disableSelection(); + setTimeout(function(){ + var focusElement = parent.window.focusElement; + if (focusElement) { + parent.window.$(focusElement).focus(); + } + }); }); function messageHandler(e) { diff --git a/src/js/views/property.js b/src/js/views/property.js index d19ef861..0ddd4c97 100644 --- a/src/js/views/property.js +++ b/src/js/views/property.js @@ -39,6 +39,10 @@ * 0.4); el.height(newHeight); }); + this.element.delegate('*', 'focus', function(e){ + window.focusElement = this; + e.stopPropagation(); + }); return this; }, @@ -80,11 +84,18 @@ widget.refresh(event,widget); }, + _setProperty: function(property, value) { + var viewId = property + '-value'; + this.element.find("#" + viewId).val(value); + }, + _modelUpdatedHandler: function(event, widget) { widget = widget || this; - if (event && (event.type === "propertyChanged" && - event.node.getType() === 'Design')) { - return; + if (event && event.type === "propertyChanged") { + if (event.node.getType() === 'Design') { + return; + } + widget._setProperty(event.property, event.newValue); } else { widget.refresh(event,widget); } From d54c3758454159aa70419be5c953b4137adce734 Mon Sep 17 00:00:00 2001 From: "Xiaoyang Yu (Max)" Date: Wed, 29 Aug 2012 15:53:41 +0800 Subject: [PATCH 2/4] [Property View] Do not highlight when changing property manually --- src/js/views/property.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/js/views/property.js b/src/js/views/property.js index 0ddd4c97..f571af58 100644 --- a/src/js/views/property.js +++ b/src/js/views/property.js @@ -90,12 +90,19 @@ }, _modelUpdatedHandler: function(event, widget) { + var affectedWidget, id; widget = widget || this; if (event && event.type === "propertyChanged") { if (event.node.getType() === 'Design') { return; } - widget._setProperty(event.property, event.newValue); + id = event.property + '-value'; + affectedWidget = widget.element.find('#' + id); + if(event.newValue != affectedWidget.val()) { + affectedWidget[0].scrollIntoViewIfNeeded(); + affectedWidget.effect('highlight', {}, 1000); + widget._setProperty(event.property, event.newValue); + } } else { widget.refresh(event,widget); } From 86eaa37f679744fa32d0863dd556cc2a498efc8c Mon Sep 17 00:00:00 2001 From: "Xiaoyang Yu (Max)" Date: Wed, 29 Aug 2012 16:36:15 +0800 Subject: [PATCH 3/4] [Property View] Checkbox should be updated with attr() --- src/js/views/property.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/js/views/property.js b/src/js/views/property.js index f571af58..533708c4 100644 --- a/src/js/views/property.js +++ b/src/js/views/property.js @@ -86,7 +86,11 @@ _setProperty: function(property, value) { var viewId = property + '-value'; - this.element.find("#" + viewId).val(value); + if (typeof(value) === 'boolean') { + this.element.find("#" + viewId).attr('checked', value); + } else { + this.element.find("#" + viewId).val(value); + } }, _modelUpdatedHandler: function(event, widget) { @@ -101,8 +105,8 @@ if(event.newValue != affectedWidget.val()) { affectedWidget[0].scrollIntoViewIfNeeded(); affectedWidget.effect('highlight', {}, 1000); - widget._setProperty(event.property, event.newValue); } + widget._setProperty(event.property, event.newValue); } else { widget.refresh(event,widget); } From 675d2b9571b6e36232294b52acfe506066cd3c5b Mon Sep 17 00:00:00 2001 From: "Xiaoyang Yu (Max)" Date: Wed, 29 Aug 2012 18:06:38 +0800 Subject: [PATCH 4/4] [Property View] Give effect to checkbox when undo/redo --- src/js/views/property.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/js/views/property.js b/src/js/views/property.js index 533708c4..c8451b63 100644 --- a/src/js/views/property.js +++ b/src/js/views/property.js @@ -94,7 +94,7 @@ }, _modelUpdatedHandler: function(event, widget) { - var affectedWidget, id; + var affectedWidget, id, value; widget = widget || this; if (event && event.type === "propertyChanged") { if (event.node.getType() === 'Design') { @@ -102,9 +102,18 @@ } id = event.property + '-value'; affectedWidget = widget.element.find('#' + id); - if(event.newValue != affectedWidget.val()) { + if (affectedWidget.attr('type') !== 'checkbox') { + value = affectedWidget.val(); + } else { + value = Boolean(affectedWidget.attr('checked')); + } + if (event.newValue !== value) { affectedWidget[0].scrollIntoViewIfNeeded(); - affectedWidget.effect('highlight', {}, 1000); + if(typeof(event.newValue) === 'boolean') { + affectedWidget.effect('pulsate', { times:3 }, 200); + } else { + affectedWidget.effect('highlight', {}, 1000); + } } widget._setProperty(event.property, event.newValue); } else {