sproutcore 1.9.1 → 1.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/VERSION.yml +1 -1
  2. data/lib/frameworks/sproutcore/CHANGELOG.md +212 -11
  3. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +17 -17
  4. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +103 -86
  5. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +1 -1
  6. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +33 -21
  7. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +3 -1
  8. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +7 -2
  9. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +5 -2
  10. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +7 -0
  11. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +1 -1
  12. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +36 -30
  13. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +84 -42
  14. data/lib/frameworks/sproutcore/frameworks/desktop/{resources/debug → debug/resources}/a_sample_image.jpg +0 -0
  15. data/lib/frameworks/sproutcore/frameworks/desktop/{resources/debug → debug/resources}/iframe.html +1 -1
  16. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +68 -68
  17. data/lib/frameworks/sproutcore/frameworks/desktop/resources/list_item.css +1 -0
  18. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +1 -0
  19. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +6 -5
  20. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +1 -1
  21. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +1 -1
  22. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +2 -0
  23. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +45 -36
  24. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/{gestureable.js → gesturable.js} +0 -0
  25. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +2 -4
  26. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +1 -0
  27. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +13 -0
  28. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +4 -33
  29. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +31 -17
  30. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +59 -1
  31. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
  32. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +4 -0
  33. data/lib/gen/app/templates/apps/@target_name@/Buildfile +3 -1
  34. data/lib/gen/app/templates/apps/@target_name@/core.js +3 -3
  35. data/lib/gen/app/templates/apps/@target_name@/main.js +7 -5
  36. data/lib/gen/app/templates/apps/@target_name@/resources/main_page.css +20 -0
  37. data/lib/gen/app/templates/apps/@target_name@/resources/main_page.js +7 -7
  38. data/lib/gen/controller/templates/controllers/@filename@_controller.js +2 -2
  39. data/lib/gen/data-source/templates/data_sources/@filename@_data_source.js +21 -21
  40. data/lib/gen/design/templates/resources/@filename@.css +12 -0
  41. data/lib/gen/framework/templates/frameworks/@target_name@/core.js +3 -3
  42. data/lib/gen/framework/templates/frameworks/@target_name@/english.lproj/strings.js +1 -1
  43. data/lib/gen/language/templates/@filename@/strings.js +1 -1
  44. data/lib/gen/model/templates/models/@filename@_model.js +1 -1
  45. data/lib/gen/page/templates/pages/@target_name@/core.js +3 -3
  46. data/lib/gen/project/templates/@filename@/Buildfile +29 -5
  47. data/lib/gen/{responder → state}/Buildfile +3 -2
  48. data/lib/gen/state/README +1 -0
  49. data/lib/gen/state/USAGE +15 -0
  50. data/lib/gen/state/templates/states/@filename@_state.js +24 -0
  51. data/lib/gen/state/templates/tests/states/@filename@_test.js +12 -0
  52. data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +3 -1
  53. data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +3 -3
  54. data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +3 -10
  55. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.css +20 -0
  56. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +7 -7
  57. data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +3 -3
  58. data/lib/sproutcore/models/generator.rb +1 -1
  59. data/spec/lib/models/generator/snake_case_spec.rb +26 -0
  60. data/sproutcore.gemspec +16 -16
  61. data/vendor/chance/lib/chance/instance/spriting.rb +32 -30
  62. metadata +30 -26
  63. data/lib/frameworks/sproutcore/frameworks/desktop/resources/debug/apple-logo1.jpeg +0 -0
  64. data/lib/gen/responder/README +0 -1
  65. data/lib/gen/responder/USAGE +0 -15
  66. data/lib/gen/responder/templates/states/@filename@_state.js +0 -36
@@ -51,7 +51,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
51
51
  @type Boolean
52
52
  @default YES
53
53
  */
54
- acceptsFirstResponder: function() {
54
+ acceptsFirstResponder: function () {
55
55
  if (SC.FOCUS_ALL_CONTROLS) { return this.get('isEnabled'); }
56
56
  return NO;
57
57
  }.property('isEnabled').cacheable(),
@@ -313,7 +313,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
313
313
  Call itemsDidChange once to initialize segment child views for the items that exist at
314
314
  creation time.
315
315
  */
316
- init: function() {
316
+ init: function () {
317
317
  sc_super();
318
318
 
319
319
  var title = this.get('overflowTitle'),
@@ -339,7 +339,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
339
339
  this.itemsDidChange();
340
340
  },
341
341
 
342
- shouldHandleOverflowDidChange: function() {
342
+ shouldHandleOverflowDidChange: function () {
343
343
  if (this.get('shouldHandleOverflow')) {
344
344
  // remeasure should show/hide it as needed
345
345
  this.invokeLast(this.remeasure);
@@ -352,7 +352,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
352
352
  Called whenever the number of items changes. This method populates SegmentedView's childViews, taking
353
353
  care to re-use existing childViews if possible.
354
354
  */
355
- itemsDidChange: function() {
355
+ itemsDidChange: function () {
356
356
  var items = this.get('items') || [],
357
357
  item,
358
358
  localItem, // Used to avoid altering the original items
@@ -499,7 +499,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
499
499
  This observer method is called whenever any of the relevant properties of an item change. This only applies
500
500
  to SC.Object based items that may be observed.
501
501
  */
502
- itemContentDidChange: function(item, key, alwaysNull, index) {
502
+ itemContentDidChange: function (item, key, alwaysNull, index) {
503
503
  var items = this.get('items'),
504
504
  childViews = this.get('childViews'),
505
505
  childView;
@@ -522,7 +522,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
522
522
  /** @private
523
523
  Whenever the view resizes, we need to check to see if we're overflowing.
524
524
  */
525
- viewDidResize: function() {
525
+ viewDidResize: function () {
526
526
  var isHorizontal = this.get('layoutDirection') === SC.LAYOUT_HORIZONTAL,
527
527
  visibleDim = isHorizontal ? this.$().width() : this.$().height();
528
528
 
@@ -535,7 +535,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
535
535
  /** @private
536
536
  Whenever visibility changes, we need to check to see if we're overflowing.
537
537
  */
538
- isVisibleInWindowDidChange: function() {
538
+ isVisibleInWindowDidChange: function () {
539
539
  if (this.get('shouldHandleOverflow')) {
540
540
  this.invokeLast(this.remeasure);
541
541
  }
@@ -545,7 +545,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
545
545
  Calling this method forces the segments to be remeasured and will also adjust the
546
546
  segments for overflow if necessary.
547
547
  */
548
- remeasure: function() {
548
+ remeasure: function () {
549
549
  if (!this.get('shouldHandleOverflow')) { return; }
550
550
  var renderDelegate = this.get('renderDelegate'),
551
551
  childViews = this.get('childViews'),
@@ -571,7 +571,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
571
571
  /** @private
572
572
  This method is called to adjust the segment views to see if we need to handle for overflow.
573
573
  */
574
- adjustOverflow: function() {
574
+ adjustOverflow: function () {
575
575
  if (!this.get('shouldHandleOverflow')) { return; }
576
576
 
577
577
  var childViews = this.get('childViews'),
@@ -600,8 +600,17 @@ SC.SegmentedView = SC.View.extend(SC.Control,
600
600
  dimToFit = (i === length - 1) ? curElementsDim : curElementsDim + this.cachedOverflowDim;
601
601
 
602
602
  if (dimToFit > visibleDim) {
603
- // Add the localItem to the overflowItems
604
- this.overflowItems.pushObject(childView.get('localItem'));
603
+ // Create a menu item based on the original item.
604
+ overflowItem = {};
605
+ localItem = childView.get('localItem');
606
+
607
+ overflowItem[this.get('itemTitleKey')] = localItem.get(this.get('itemTitleKey'));
608
+ overflowItem[this.get('itemIconKey')] = localItem.get(this.get('itemIconKey'));
609
+ overflowItem[this.get('itemIsEnabledKey')] = localItem.get(this.get('itemIsEnabledKey'));
610
+ overflowItem[this.get('itemKeyEquivalentKey')] = localItem.get(this.get('itemKeyEquivalentKey'));
611
+ overflowItem[this.get('itemValueKey')] = localItem.get(this.get('itemValueKey'));
612
+
613
+ this.overflowItems.pushObject(overflowItem);
605
614
 
606
615
  // Record that we're now overflowing
607
616
  this.isOverflowing = YES;
@@ -638,7 +647,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
638
647
 
639
648
  It ignores the last segment (the overflow segment).
640
649
  */
641
- segmentDimensions: function() {
650
+ segmentDimensions: function () {
642
651
  var cv = this.get('childViews'),
643
652
  v, f,
644
653
  dims = [],
@@ -656,7 +665,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
656
665
  /**
657
666
  Return the dimension (height or width depending on the layout direction) over the overflow segment.
658
667
  */
659
- overflowSegmentDim: function() {
668
+ overflowSegmentDim: function () {
660
669
  var cv = this.get('childViews'),
661
670
  v, f,
662
671
  isHorizontal = this.get('layoutDirection') === SC.LAYOUT_HORIZONTAL;
@@ -673,7 +682,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
673
682
  /**
674
683
  Return the index of the segment view that is the target of the mouse click.
675
684
  */
676
- indexForClientPosition: function(x, y) {
685
+ indexForClientPosition: function (x, y) {
677
686
  var cv = this.get('childViews'),
678
687
  length, i,
679
688
  v, rect,
@@ -724,7 +733,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
724
733
  Determines the index into the displayItems array where the passed mouse
725
734
  event occurred.
726
735
  */
727
- displayItemIndexForEvent: function(evt) {
736
+ displayItemIndexForEvent: function (evt) {
728
737
  var renderDelegate = this.get('renderDelegate');
729
738
  var x = evt.clientX;
730
739
  var y = evt.clientY;
@@ -747,7 +756,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
747
756
  },
748
757
 
749
758
  /** @private */
750
- keyDown: function(evt) {
759
+ keyDown: function (evt) {
751
760
  var childViews,
752
761
  childView,
753
762
  i, length,
@@ -806,7 +815,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
806
815
  },
807
816
 
808
817
  /** @private */
809
- mouseDown: function(evt) {
818
+ mouseDown: function (evt) {
810
819
  var childViews = this.get('childViews'),
811
820
  childView,
812
821
  overflowIndex = childViews.get('length') - 1,
@@ -829,7 +838,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
829
838
  },
830
839
 
831
840
  /** @private */
832
- mouseUp: function(evt) {
841
+ mouseUp: function (evt) {
833
842
  var activeChildView,
834
843
  index;
835
844
 
@@ -851,7 +860,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
851
860
  },
852
861
 
853
862
  /** @private */
854
- mouseMoved: function(evt) {
863
+ mouseMoved: function (evt) {
855
864
  var childViews = this.get('childViews'),
856
865
  overflowIndex = childViews.get('length') - 1,
857
866
  activeChildView,
@@ -881,7 +890,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
881
890
  },
882
891
 
883
892
  /** @private */
884
- mouseEntered: function(evt) {
893
+ mouseEntered: function (evt) {
885
894
  var childViews = this.get('childViews'),
886
895
  childView,
887
896
  overflowIndex = childViews.get('length') - 1,
@@ -906,7 +915,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
906
915
  },
907
916
 
908
917
  /** @private */
909
- mouseExited: function(evt) {
918
+ mouseExited: function (evt) {
910
919
  var activeChildView;
911
920
 
912
921
  // if mouse was down, hide active index
@@ -921,7 +930,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
921
930
  },
922
931
 
923
932
  /** @private */
924
- touchStart: function(touch) {
933
+ touchStart: function (touch) {
925
934
  var childViews = this.get('childViews'),
926
935
  childView,
927
936
  overflowIndex = childViews.get('length') - 1,
@@ -945,7 +954,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
945
954
  },
946
955
 
947
956
  /** @private */
948
- touchEnd: function(touch) {
957
+ touchEnd: function (touch) {
949
958
  var activeChildView,
950
959
  index;
951
960
 
@@ -966,7 +975,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
966
975
  },
967
976
 
968
977
  /** @private */
969
- touchesDragged: function(evt, touches) {
978
+ touchesDragged: function (evt, touches) {
970
979
  var isTouching = this.touchIsInBoundary(evt),
971
980
  childViews = this.get('childViews'),
972
981
  overflowIndex = childViews.get('length') - 1,
@@ -1005,7 +1014,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
1005
1014
  },
1006
1015
 
1007
1016
  /** @private */
1008
- _touchDidExit: function(evt) {
1017
+ _touchDidExit: function (evt) {
1009
1018
  var activeChildView;
1010
1019
 
1011
1020
  if (this.isTouching) {
@@ -1018,7 +1027,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
1018
1027
  },
1019
1028
 
1020
1029
  /** @private */
1021
- _touchDidEnter: function(evt) {
1030
+ _touchDidEnter: function (evt) {
1022
1031
  var childViews = this.get('childViews'),
1023
1032
  childView,
1024
1033
  overflowIndex = childViews.get('length') - 1,
@@ -1042,7 +1051,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
1042
1051
  Simulates the user clicking on the segment at the specified index. This
1043
1052
  will update the value if possible and fire the action.
1044
1053
  */
1045
- triggerItemAtIndex: function(index) {
1054
+ triggerItemAtIndex: function (index) {
1046
1055
  var childViews = this.get('childViews'),
1047
1056
  childView,
1048
1057
  sel, value, val, empty, mult;
@@ -1126,7 +1135,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
1126
1135
  /** @private
1127
1136
  Invoked whenever an item is selected in the overflow menu.
1128
1137
  */
1129
- selectOverflowItem: function(menu) {
1138
+ selectOverflowItem: function (menu) {
1130
1139
  var item = menu.get('selectedItem');
1131
1140
 
1132
1141
  this.triggerItemAtIndex(item.get('index'));
@@ -1141,7 +1150,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
1141
1150
  /** @private
1142
1151
  Presents the popup menu containing overflowed segments.
1143
1152
  */
1144
- showOverflowMenu: function() {
1153
+ showOverflowMenu: function () {
1145
1154
  var childViews = this.get('childViews'),
1146
1155
  overflowViewIndex = childViews.get('length') - 1,
1147
1156
  overflowItems = this.overflowItems,
@@ -1157,16 +1166,16 @@ SC.SegmentedView = SC.View.extend(SC.Control,
1157
1166
  isArray = SC.isArray(value);
1158
1167
  for (var i = 0; i < overflowItemsLength; i++) {
1159
1168
  var item = overflowItems.objectAt(i),
1160
- itemValueKey = this.get('itemValueKey');
1169
+ itemValueKey = this.get('itemValueKey');
1161
1170
 
1162
- if (isArray ? value.indexOf(item.get(itemValueKey)) >= 0 : value === item.get(itemValueKey)) {
1163
- item.set('isChecked', YES);
1171
+ if (isArray ? value.indexOf(item[itemValueKey]) >= 0 : value === item[itemValueKey]) {
1172
+ item.isChecked = YES;
1164
1173
  } else {
1165
- item.set('isChecked', NO);
1174
+ item.isChecked = NO;
1166
1175
  }
1167
1176
 
1168
1177
  // Track the matching segment index
1169
- item.set('index', startIndex + i);
1178
+ item.index = startIndex + i;
1170
1179
  }
1171
1180
 
1172
1181
  // TODO: we can't pass a shortcut key to the menu, because it isn't a property of SegmentedView (yet?)
@@ -1183,7 +1192,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
1183
1192
 
1184
1193
  // We need to be able to update our overflow segment even if the user clicks outside of the menu. Since
1185
1194
  // there is no callback method or observable property when the menu closes, override modalPaneDidClick().
1186
- modalPaneDidClick: function() {
1195
+ modalPaneDidClick: function () {
1187
1196
  sc_super();
1188
1197
 
1189
1198
  // Cleanup
@@ -1204,7 +1213,7 @@ SC.SegmentedView = SC.View.extend(SC.Control,
1204
1213
  /** @private
1205
1214
  Whenever the value changes, update the segments accordingly.
1206
1215
  */
1207
- valueDidChange: function() {
1216
+ valueDidChange: function () {
1208
1217
  var value = this.get('value'),
1209
1218
  overflowItemsLength,
1210
1219
  childViews = this.get('childViews'),
@@ -106,7 +106,6 @@ SC.BaseTheme.labelRenderDelegate = SC.RenderDelegate.create({
106
106
  htmlForTitleAndIcon: function(dataSource) {
107
107
  var title = dataSource.get('title'),
108
108
  hint = dataSource.get('hint'),
109
- hintEnabled = dataSource.get('hintEnabled'),
110
109
  escapeHTML = dataSource.get('escapeHTML'),
111
110
  icon = dataSource.get('icon') || '';
112
111
 
@@ -115,9 +114,8 @@ SC.BaseTheme.labelRenderDelegate = SC.RenderDelegate.create({
115
114
  if (title && escapeHTML) {
116
115
  title = SC.RenderContext.escapeHTML(title) ;
117
116
  }
118
-
119
- if (hintEnabled && hint && !title) {
120
- if (escapeHTML) hint = SC.RenderContext.escapeHTML(hint);
117
+ if (escapeHTML) { hint = SC.RenderContext.escapeHTML(hint); }
118
+ if (hint && !title) {
121
119
  title = "<span class='sc-hint'>" + hint + "</span>";
122
120
  }
123
121
 
@@ -71,6 +71,7 @@
71
71
  border: 1px solid #CC6633;
72
72
  background-color: #FFCC33;
73
73
  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#FFCD82), to(#DE9C00));
74
+ border-radius: 4px;
74
75
  -moz-border-radius: 4px;
75
76
  -webkit-border-radius: 4px;
76
77
  line-height: 14px;
@@ -19,6 +19,11 @@ var pane = SC.ControlTestPane.design()
19
19
  isEnabled: NO
20
20
  })
21
21
 
22
+ .add("hint", SC.LabelView, {
23
+ hint: 'Get on with it!',
24
+ isEditable: true
25
+ })
26
+
22
27
  .add("selectable", SC.LabelView, {
23
28
  value:'hello',
24
29
  isTextSelectable: YES
@@ -175,4 +180,12 @@ test("Check that the title is set or not and if it is in the appropriate element
175
180
  equals(viewElem.text(), '', 'has correct empty value set');
176
181
  });
177
182
 
183
+ test("The hint property should appear if the label is editable and has no value.", function () {
184
+ var viewElem = pane.view('hint').$();
185
+
186
+ viewElem = viewElem.find('.sc-hint');
187
+ equals(viewElem.length, 1, "has an .sc-hint span inside");
188
+ equals(viewElem.text(), 'Get on with it!', 'has correct hint value set');
189
+ });
190
+
178
191
  })();
@@ -435,31 +435,14 @@ SC.InlineTextFieldView = SC.TextFieldView.extend(SC.InlineEditor,
435
435
  return YES;
436
436
  },
437
437
 
438
- // do it here instead of waiting on the binding to make sure the UI
439
- // updates immediately.
440
- /** @private */
441
- fieldValueDidChange: function(partialChange) {
442
- arguments.callee.base.call(this, partialChange) ;
443
- //this.resizeToFit(this.getFieldValue()) ;
444
- },
445
-
446
- // invoked when the user presses return. If this is a multi-line field,
447
- // then allow the newine to proceed. Otherwise, try to commit the
448
- // edit.
438
+ // Invoked when the user presses return. If this is a multi-line field,
439
+ // then allow the new line to proceed by calling the super class.
440
+ // Otherwise, try to commit the edit.
449
441
  /** @private */
450
442
  insertNewline: function(evt) {
451
443
  if (this.get('isTextArea')) {
452
- evt.allowDefault();
453
- return arguments.callee.base.call(this, evt) ;
444
+ return sc_super();
454
445
  } else {
455
- // TODO : this is a work around. There is a bug where the
456
- // last character would get dropped
457
- // if the editing was completed by pressing return
458
- // needs to be fixed
459
- if (this.get('value') != this.$input().val()) {
460
- this.set('value', this.$input().val());
461
- }
462
-
463
446
  this.commitEditing() ;
464
447
  return YES ;
465
448
  }
@@ -489,18 +472,6 @@ SC.InlineTextFieldView = SC.TextFieldView.extend(SC.InlineEditor,
489
472
  if(prev && prev.beginEditing) prev.beginEditing();
490
473
  }
491
474
  return YES ;
492
- },
493
-
494
- /** @private */
495
- deleteForward: function(evt) {
496
- evt.allowDefault();
497
- return YES;
498
- },
499
-
500
- /** @private */
501
- deleteBackward: function(evt) {
502
- evt.allowDefault();
503
- return YES ;
504
475
  }
505
476
  });
506
477
 
@@ -30,7 +30,7 @@ SC.LabelView = SC.View.extend(SC.Control, SC.InlineEditable,
30
30
 
31
31
  classNames: ['sc-label-view'],
32
32
 
33
- displayProperties: ['displayTitle', 'textAlign', 'fontWeight', 'icon', 'escapeHTML', 'needsEllipsis', 'hint', 'toolTip'],
33
+ displayProperties: ['displayTitle', 'displayHint', 'escapeHTML', 'textAlign', 'fontWeight', 'icon', 'needsEllipsis', 'toolTip'],
34
34
 
35
35
  /**
36
36
  The delegate that gets notified of events related to the editing process. Set
@@ -103,14 +103,11 @@ SC.LabelView = SC.View.extend(SC.Control, SC.InlineEditable,
103
103
  */
104
104
  hint: null,
105
105
 
106
- /*
107
- Whether hint should be shown or not. By default this is tied to isEditable
108
- so the hint will only show if isEditable is YES.
109
-
110
- @type Boolean
111
- @property
112
- */
106
+ /** @deprecated */
113
107
  hintEnabled: function() {
108
+ //@if(debug)
109
+ SC.warn("Developer Warning: The hintEnabled property of SC.LabelView is deprecated. Please simply get the isEditable property to determine if the hint will be displayed instead.");
110
+ //@endif
114
111
  return this.get('isEditable');
115
112
  }.property('isEditable').cacheable(),
116
113
 
@@ -149,12 +146,12 @@ SC.LabelView = SC.View.extend(SC.Control, SC.InlineEditable,
149
146
  renderDelegateName: 'labelRenderDelegate',
150
147
 
151
148
  /**
152
- [RO] The value that will actually be displayed.
149
+ The value that will actually be displayed.
153
150
 
154
151
  This property is dynamically computed by applying localization,
155
152
  string conversion and other normalization utilities.
156
153
 
157
- @field
154
+ @type String
158
155
  */
159
156
  displayTitle: function() {
160
157
  var value, formatter;
@@ -187,20 +184,37 @@ SC.LabelView = SC.View.extend(SC.Control, SC.InlineEditable,
187
184
  // 4. Localize
188
185
  if (value && this.getDelegateProperty('localize', this.displayDelegate)) value = SC.String.loc(value) ;
189
186
 
190
- return value ;
187
+ return value;
191
188
  }.property('value', 'localize', 'formatter').cacheable(),
192
189
 
193
-
194
190
  /**
195
- [RO] The hint value that will actually be displayed.
196
-
197
- This property is dynamically computed by applying localization
198
- and other normalization utilities.
191
+ The hint that will actually be displayed depending on localization and
192
+ sanitizing (or not).
199
193
 
194
+ @type String
200
195
  */
196
+ displayHint: function () {
197
+ var hint = this.get('hint'),
198
+ isEditable = this.get('isEditable');
199
+
200
+ if (isEditable) {
201
+ if (hint && this.getDelegateProperty('localize', this.displayDelegate)) {
202
+ hint = SC.String.loc(hint);
203
+ }
204
+ } else {
205
+ hint = null;
206
+ }
207
+
208
+ return hint;
209
+ }.property('hint', 'localize', 'isEditable').cacheable(),
210
+
211
+ /** @deprecated */
201
212
  hintValue: function() {
213
+ //@if(debug)
214
+ SC.warn("Developer Warning: The hintValue property of SC.LabelView is deprecated. Please simply get the hint or displayHint (localized) property instead.");
215
+ //@endif
202
216
  var hintVal = this.get('hint');
203
- return hintVal ;
217
+ return hintVal;
204
218
  }.property('hint').cacheable(),
205
219
 
206
220
  /**