Chromium Code Reviews| Index: chrome/browser/resources/options2/chromeos/display_options.js |
| diff --git a/chrome/browser/resources/options2/chromeos/display_options.js b/chrome/browser/resources/options2/chromeos/display_options.js |
| index 7df934f57e0bfe42bb5adc3f2472d010e696067b..8617478cae1c7515455895c90766f7961ac50a7e 100644 |
| --- a/chrome/browser/resources/options2/chromeos/display_options.js |
| +++ b/chrome/browser/resources/options2/chromeos/display_options.js |
| @@ -7,6 +7,9 @@ cr.define('options', function() { |
| // The scale ratio of the display rectangle to its original size. |
| /** @const */ var VISUAL_SCALE = 1 / 10; |
| + // The margin pixels to calculate the arrow position from left. This happens |
|
James Hawkins
2012/08/03 18:08:23
You use the word 'left' here: does this work in RT
Jun Mukai
2012/08/06 08:07:32
Removed this constant. According to kuscher's com
|
| + // due to the 'padding' value of $('display-options-displays-view-host'). |
| + /** @const */ var ARROW_POSITION_MARGIN = 20; |
| /** |
| * Enumeration of secondary display layout. The value has to be same as the |
| @@ -44,15 +47,14 @@ cr.define('options', function() { |
| initializePage: function() { |
| OptionsPage.prototype.initializePage.call(this); |
| - $('display-options-confirm').onclick = function() { |
| - OptionsPage.closeOverlay(); |
| - }; |
| - |
| $('display-options-toggle-mirroring').onclick = (function() { |
| this.mirroring_ = !this.mirroring_; |
| chrome.send('setMirroring', [this.mirroring_]); |
| }).bind(this); |
| + $('display-options-apply-button').onclick = (function() { |
| + chrome.send('setDisplayLayout', [this.layout_]); |
| + }).bind(this); |
| chrome.send('getDisplayInfo'); |
| }, |
| @@ -166,30 +168,37 @@ cr.define('options', function() { |
| if (e.button != 0) |
| return true; |
| - if (e.target == this.displays_view_) |
| - return true; |
| + this.focused_index_ = null; |
| + for (var i = 0; i < this.displays_.length; i++) { |
| + var display = this.displays_[i]; |
| + if (this.displays_[i].div == e.target) { |
| + this.focused_index_ = i; |
| + break; |
| + } else if (i == 0 && $('display-launcher') == e.target) { |
| + this.focused_index_ = i; |
|
James Hawkins
2012/08/03 18:08:23
This is the same functionality as the block above:
Jun Mukai
2012/08/06 08:07:32
Done.
|
| + break; |
| + } |
| + } |
| for (var i = 0; i < this.displays_.length; i++) { |
| var display = this.displays_[i]; |
| - if (display.div == e.target) { |
| - // Do not drag the primary monitor. |
| - if (i == 0) |
| - return true; |
| + display.div.className = 'displays-display'; |
| + if (i != this.focused_index_) |
| + continue; |
| - this.focused_index_ = i; |
| - this.dragging_ = { |
| + display.div.className += ' displays-focused'; |
| + // Do not drag the primary monitor. |
| + if (i == 0) |
| + continue; |
| + |
| + this.dragging_ = { |
| display: display, |
| click_location: {x: e.offsetX, y: e.offsetY}, |
| offset: {x: e.pageX - e.offsetX - display.div.offsetLeft, |
| y: e.pageY - e.offsetY - display.div.offsetTop} |
| - }; |
| - if (display.div.className.indexOf('displays-focused') == -1) |
| - display.div.className += ' displays-focused'; |
| - } else if (display.div.className.indexOf('displays-focused') >= 0) { |
| - // We can assume that '-primary' monitor doesn't have '-focused'. |
| - this.displays_[i].div.className = 'displays-display'; |
| - } |
| + }; |
| } |
| + this.updateSelectedDisplayDescription_(); |
| return false; |
| }, |
| @@ -199,14 +208,45 @@ cr.define('options', function() { |
| * @param {Event} e The mouse up event. |
| */ |
| onMouseUp_: function(e) { |
| - if (this.dragging_) { |
| + if (this.dragging_) |
| this.dragging_ = null; |
| - chrome.send('setDisplayLayout', [this.layout_]); |
| - } |
| + this.updateSelectedDisplayDescription_(); |
| return false; |
| }, |
| /** |
| + * Update the description of the selected display section. |
|
James Hawkins
2012/08/03 18:08:23
s/Update/Updates.
Jun Mukai
2012/08/06 08:07:32
Done.
|
| + * @private |
| + */ |
| + updateSelectedDisplayDescription_: function() { |
| + if (this.focused_index_ == null) { |
| + $('selected-display-data-container').hidden = true; |
| + $('display-configuration-arrow').hidden = true; |
| + return; |
| + } |
| + |
| + $('selected-display-data-container').hidden = false; |
| + var display = this.displays_[this.focused_index_]; |
| + var name_element = $('selected-display-name'); |
|
James Hawkins
2012/08/03 18:08:23
s/name_element/nameElement/
javaScript case here
Jun Mukai
2012/08/06 08:07:32
Sorry breaking such a basic rule. I reviewed the
|
| + while (name_element.childNodes.length > 0) |
| + name_element.removeChild(name_element.firstChild); |
| + name_element.appendChild(document.createTextNode(display.name)); |
| + |
| + var resolution_data = display.width + 'x' + display.height; |
| + var resolution_element = $('selected-display-resolution'); |
| + while (resolution_element.childNodes.length > 0) |
| + resolution_element.removeChild(resolution_element.firstChild); |
| + resolution_element.appendChild(document.createTextNode(resolution_data)); |
| + |
| + var arrow = $('display-configuration-arrow'); |
| + arrow.hidden = false; |
| + arrow.style.top = |
| + $('display-configurations').offsetTop - arrow.offsetHeight / 2 + 'px'; |
| + arrow.style.left = display.div.offsetLeft + display.div.offsetWidth / 2 + |
|
James Hawkins
2012/08/03 18:08:23
RTL
Jun Mukai
2012/08/06 08:07:32
Removed ARROW_POSITION_MARGIN and working fine now
|
| + ARROW_POSITION_MARGIN - arrow.offsetWidth / 2 + 'px'; |
| + }, |
| + |
| + /** |
| * Clears the drawing area for display rectangles. |
| * @private |
| */ |
| @@ -250,8 +290,9 @@ cr.define('options', function() { |
| div.style.width = width + 'px'; |
| div.style.height = height + 'px'; |
| div.style.zIndex = i; |
| - if (i == num_displays - 1) |
| - div.className += ' displays-primary'; |
| + // set 'display-mirrored' class for the background display rectangles. |
| + if (i != num_displays - 1) |
| + div.className += ' display-mirrored'; |
| this.displays_view_.appendChild(div); |
| } |
| }, |
| @@ -282,13 +323,19 @@ cr.define('options', function() { |
| display.div = div; |
| div.className = 'displays-display'; |
| - if (i == 0) |
| - div.className += ' displays-primary'; |
| - else if (i == this.focused_index_) |
| + if (i == this.focused_index_) |
| div.className += ' displays-focused'; |
| div.style.width = display.width * VISUAL_SCALE + 'px'; |
| div.style.height = display.height * VISUAL_SCALE + 'px'; |
| div.style.lineHeight = div.style.height; |
| + if (i == 0) { |
| + // We assume that first display is primary and put a grey rectangle to |
|
James Hawkins
2012/08/03 18:08:23
nit: Don't use pronouns (we) in comments; pronouns
Jun Mukai
2012/08/06 08:07:32
Done.
|
| + // denote launcher below. |
| + var launcher = document.createElement('div'); |
| + launcher.id = 'display-launcher'; |
| + launcher.style.width = display.div.style.width; |
| + div.appendChild(launcher); |
| + } |
| switch (this.layout_) { |
| case SecondaryDisplayLayout.RIGHT: |
| display.div.style.top = '0'; |
| @@ -312,6 +359,8 @@ cr.define('options', function() { |
| break; |
| } |
| + div.appendChild(document.createTextNode(display.name)); |
| + |
| this.displays_view_.appendChild(div); |
| } |
| }, |
| @@ -333,7 +382,9 @@ cr.define('options', function() { |
| // Focus to the first display next to the primary one when |displays| list |
| // is updated. |
| - if (this.displays_.length != displays.length) |
| + if (this.mirroring_) |
| + this.focused_index_ = null; |
| + else if (this.displays_.length != displays.length) |
| this.focused_index_ = 1; |
| this.displays_ = displays; |
| @@ -343,6 +394,7 @@ cr.define('options', function() { |
| this.layoutMirroringDisplays_(); |
| else |
| this.layoutDisplays_(); |
| + this.updateSelectedDisplayDescription_(); |
| }, |
| }; |