Chromium Code Reviews| Index: Source/devtools/front_end/ResponsiveDesignView.js |
| diff --git a/Source/devtools/front_end/ResponsiveDesignView.js b/Source/devtools/front_end/ResponsiveDesignView.js |
| index 246a458e8b8e5a217d124154508c143360c2b2c5..c6cff2eaeecd2c996b5766dbcf5e7d921cb45a46 100644 |
| --- a/Source/devtools/front_end/ResponsiveDesignView.js |
| +++ b/Source/devtools/front_end/ResponsiveDesignView.js |
| @@ -24,17 +24,17 @@ WebInspector.ResponsiveDesignView = function(inspectedPagePlaceholder) |
| this._slidersContainer = this._container.element.createChild("div", "vbox responsive-design-sliders-container"); |
| var hbox = this._slidersContainer.createChild("div", "hbox flex-auto"); |
| this._heightSliderContainer = this._slidersContainer.createChild("div", "hbox responsive-design-slider-height"); |
| + this._resolutionHeightLabel = this._heightSliderContainer.createChild("div", "responsive-design-resolution-label responsive-design-resolution-height"); |
| this._pageContainer = hbox.createChild("div", "vbox flex-auto"); |
| this._widthSliderContainer = hbox.createChild("div", "vbox responsive-design-slider-width"); |
| + this._resolutionWidthLabel = this._widthSliderContainer.createChild("div", "responsive-design-resolution-label responsive-design-resolution-width"); |
| this._widthSlider = this._widthSliderContainer.createChild("div", "responsive-design-slider-thumb"); |
| + this._widthSlider.createChild("div", "responsive-design-thumb-handle"); |
| this._createResizer(this._widthSlider, false); |
| - this._widthZeroButton = this._widthSlider.createChild("div", "responsive-design-zero-button"); |
| - this._widthZeroButton.addEventListener("click", this._zeroButtonClicked.bind(this, false)); |
| this._heightSlider = this._heightSliderContainer.createChild("div", "responsive-design-slider-thumb"); |
| + this._heightSlider.createChild("div", "responsive-design-thumb-handle"); |
| this._createResizer(this._heightSlider, true); |
| - this._heightZeroButton = this._heightSlider.createChild("div", "responsive-design-zero-button"); |
| - this._heightZeroButton.addEventListener("click", this._zeroButtonClicked.bind(this, true)); |
| this._inspectedPagePlaceholder = inspectedPagePlaceholder; |
| inspectedPagePlaceholder.show(this.element); |
| @@ -64,6 +64,8 @@ WebInspector.ResponsiveDesignView.prototype = { |
| */ |
| enable: function(dipWidth, dipHeight, scale) |
| { |
| + this._resolutionWidthLabel.classList.toggle("hidden", !this._enabled); |
|
dgozman
2014/05/26 20:45:30
This is unnecessary, as the whole container is det
pfeldman
2014/05/27 07:37:13
Done.
|
| + this._resolutionHeightLabel.classList.toggle("hidden", !this._enabled); |
| if (!this._enabled) { |
| this._ignoreResize = true; |
| this._enabled = true; |
| @@ -76,6 +78,8 @@ WebInspector.ResponsiveDesignView.prototype = { |
| this._scale = scale; |
| this._dipWidth = dipWidth; |
| this._dipHeight = dipHeight; |
| + this._resolutionWidthLabel.textContent = dipWidth + "px"; |
| + this._resolutionHeightLabel.textContent = dipHeight + "px"; |
| this._updateUI(); |
| }, |
| @@ -105,8 +109,8 @@ WebInspector.ResponsiveDesignView.prototype = { |
| if (typeof this._availableSize === "undefined") { |
| var zoomFactor = WebInspector.zoomManager.zoomFactor(); |
| var rect = this.element.getBoundingClientRect(); |
| - this._availableSize = new Size(rect.width * zoomFactor - WebInspector.ResponsiveDesignView.SliderWidth - WebInspector.ResponsiveDesignView.RulerWidth, |
| - rect.height * zoomFactor - WebInspector.ResponsiveDesignView.SliderWidth - WebInspector.ResponsiveDesignView.RulerWidth); |
| + this._availableSize = new Size(rect.width * zoomFactor - WebInspector.ResponsiveDesignView.RulerWidth, |
| + rect.height * zoomFactor - WebInspector.ResponsiveDesignView.RulerWidth); |
| } |
| return this._availableSize; |
| }, |
| @@ -143,12 +147,12 @@ WebInspector.ResponsiveDesignView.prototype = { |
| { |
| var cssOffset = event.data.currentPosition - event.data.startPosition; |
| var dipOffset = cssOffset * WebInspector.zoomManager.zoomFactor(); |
| - var newSize = this._resizeStartSize + dipOffset; |
| + var newSize = Math.max(this._resizeStartSize + dipOffset, 1); |
| var requested = new Size(this._dipWidth, this._dipHeight); |
| if (event.target.isVertical()) |
| - requested.height = Number.constrain(newSize, 1, this.availableDipSize().height); |
| + requested.height = newSize; |
| else |
| - requested.width = Number.constrain(newSize, 1, this.availableDipSize().width); |
| + requested.width = newSize; |
| this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, requested); |
| }, |
| @@ -161,20 +165,6 @@ WebInspector.ResponsiveDesignView.prototype = { |
| }, |
| /** |
| - * @param {boolean} isHeight |
| - */ |
| - _zeroButtonClicked: function(isHeight) |
| - { |
| - var size = new Size(this._dipWidth, this._dipHeight); |
| - var available = this.availableDipSize(); |
| - if (isHeight) |
| - size.height = this._dipHeight ? 0 : available.height; |
| - else |
| - size.width = this._dipWidth ? 0 : available.width; |
| - this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, size); |
| - }, |
| - |
| - /** |
| * Draws canvas of the specified css size in DevTools page space. |
| * Canvas contains grid and rulers. |
| * @param {number} cssCanvasWidth |
| @@ -199,15 +189,17 @@ WebInspector.ResponsiveDesignView.prototype = { |
| canvas.height = deviceScaleFactor * cssCanvasHeight; |
| context.scale(canvas.width / dipCanvasWidth, canvas.height / dipCanvasHeight); |
| - context.font = "10px " + WebInspector.monospaceFontFamily(); |
| + context.font = "11px " + WebInspector.fontFamily(); |
| - const gridSubStep = 10; |
| + const rulerStep = 100; |
| + const rulerSubStep = 5; |
| const gridStep = 50; |
| - const rulerBackgroundColor = "rgb(54, 54, 54)"; |
| + const gridSubStep = 10; |
| + const rulerBackgroundColor = "rgb(64, 64, 64)"; |
| const backgroundColor = "rgb(102, 102, 102)"; |
| const lightLineColor = "rgb(132, 132, 132)"; |
| const darkLineColor = "rgb(114, 114, 114)"; |
| - const textColor = "rgb(180, 180, 180)"; |
| + const textColor = "rgb(220, 220, 220)"; |
| var scale = this._scale || 1; |
| var rulerWidth = WebInspector.ResponsiveDesignView.RulerWidth; |
| @@ -225,61 +217,80 @@ WebInspector.ResponsiveDesignView.prototype = { |
| context.fillRect(0, 0, dipGridWidth, dipGridHeight); |
| context.translate(0.5, 0.5); |
| + context.strokeStyle = textColor; |
| context.fillStyle = textColor; |
| context.lineWidth = 1; |
| - { |
| - // Draw vertical lines. |
| - for (var x = 0; x < dipGridWidth; x += gridSubStep) { |
| - var color = darkLineColor; |
| - var y = -rulerWidth / 6; |
| - if (!(x % (2 * gridSubStep))) |
| - y = -rulerWidth / 3; |
| - if (!(x % gridStep)) { |
| - if (x) { |
| - context.save(); |
| - context.translate(x, 0); |
| - context.fillText(x, 2, -rulerWidth / 2); |
| - context.restore(); |
| - } |
| - y = -rulerWidth; |
| - color = lightLineColor; |
| + // Draw vertical ruler. |
| + for (var x = 0; x < dipGridWidth; x += rulerSubStep) { |
| + var color = darkLineColor; |
| + var y = -rulerWidth / 4; |
| + if (!(x % (rulerStep / 2))) |
| + y = -rulerWidth / 2; |
| + |
| + if (!(x % rulerStep)) { |
| + if (x) { |
| + context.save(); |
| + context.translate(x, 0); |
| + context.fillText(x, 2, -rulerWidth / 2); |
| + context.restore(); |
| } |
| - context.strokeStyle = color; |
| - |
| - context.beginPath(); |
| - context.moveTo(x, y); |
| - context.lineTo(x, dipGridHeight); |
| - context.stroke(); |
| + y = -rulerWidth; |
| } |
| + |
| + context.beginPath(); |
| + context.moveTo(x, y); |
| + context.lineTo(x, 0); |
| + context.stroke(); |
| } |
| - { |
| - // Draw horizontal lines. |
| - for (var y = 0; y < dipGridHeight; y += gridSubStep) { |
| - var color = darkLineColor; |
| - var x = -rulerWidth / 6; |
| - if (!(y % (2 * gridSubStep))) |
| - x = -rulerWidth / 3; |
| - if (!(y % gridStep)) { |
| - if (y) { |
| - context.save(); |
| - context.translate(0, y); |
| - context.rotate(-Math.PI / 2); |
| - context.fillText(y, 2, -rulerWidth / 2); |
| - context.restore(); |
| - } |
| - x = -rulerWidth; |
| - color = lightLineColor; |
| + // Draw horizontal ruler. |
| + for (var y = 0; y < dipGridHeight; y += rulerSubStep) { |
| + var color = darkLineColor; |
| + x = -rulerWidth / 4; |
| + if (!(y % (rulerStep / 2))) |
| + x = -rulerWidth / 2; |
| + |
| + if (!(y % rulerStep)) { |
| + if (y) { |
| + context.save(); |
| + context.translate(0, y); |
| + context.rotate(-Math.PI / 2); |
| + context.fillText(y, 2, -rulerWidth / 2); |
| + context.restore(); |
| } |
| - context.strokeStyle = color; |
| + x = -rulerWidth; |
| + } |
| + |
| + context.beginPath(); |
| + context.moveTo(x, y); |
| + context.lineTo(0, y); |
| + context.stroke(); |
| + } |
| + |
| + // Draw grid. |
| + drawGrid(darkLineColor, gridSubStep); |
| + drawGrid(lightLineColor, gridStep); |
| + /** |
| + * @param {string} color |
| + * @param {number} step |
| + */ |
| + function drawGrid(color, step) |
| + { |
| + context.strokeStyle = color; |
| + for (var x = 0; x < dipGridWidth; x += step) { |
| + context.beginPath(); |
| + context.moveTo(x, 0); |
| + context.lineTo(x, dipGridHeight); |
| + context.stroke(); |
| + } |
| + for (var y = 0; y < dipGridHeight; y += step) { |
| context.beginPath(); |
| - context.moveTo(x, y); |
| + context.moveTo(0, y); |
| context.lineTo(dipGridWidth, y); |
| context.stroke(); |
| } |
| - context.restore(); |
| } |
| }, |
| @@ -351,7 +362,10 @@ WebInspector.ResponsiveDesignView.prototype = { |
| */ |
| _reset: function() |
| { |
| - this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, this.availableDipSize()); |
| + var availableDipSize = this.availableDipSize(); |
| + var size = new Size(availableDipSize.width - WebInspector.ResponsiveDesignView.SliderWidth, |
| + availableDipSize.height - WebInspector.ResponsiveDesignView.SliderWidth); |
| + this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer.Events.ResizeRequested, size); |
| }, |
| __proto__: WebInspector.VBox.prototype |