Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(939)

Side by Side Diff: Source/devtools/front_end/toolbox/ResponsiveDesignView.js

Issue 298913004: [DevTools] Add Toolbox page to undocked DevTools frontend. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.VBox} 7 * @extends {WebInspector.VBox}
8 * @implements {WebInspector.OverridesSupport.PageResizer} 8 * @implements {WebInspector.OverridesSupport.PageResizer}
9 * @param {!WebInspector.InspectedPagePlaceholder} inspectedPagePlaceholder 9 * @param {!WebInspector.View} innerView
10 */ 10 */
11 WebInspector.ResponsiveDesignView = function(inspectedPagePlaceholder) 11 WebInspector.ResponsiveDesignView = function(innerView)
12 { 12 {
13 WebInspector.VBox.call(this); 13 WebInspector.VBox.call(this);
14 this.registerRequiredCSS("responsiveDesignView.css"); 14 this.registerRequiredCSS("responsiveDesignView.css");
15 15
16 this._container = new WebInspector.View(); 16 this._container = new WebInspector.View();
17 this._container.element.classList.add("responsive-design"); 17 this._container.element.classList.add("responsive-design");
18 18
19 this._canvas = this._container.element.createChild("canvas", "fill"); 19 this._canvas = this._container.element.createChild("canvas", "fill");
20 this._resetButton = this._container.element.createChild("div", "responsive-d esign-reset-button"); 20 this._resetButton = this._container.element.createChild("div", "responsive-d esign-reset-button");
21 this._resetButton.addEventListener("click", this._reset.bind(this), false); 21 this._resetButton.addEventListener("click", this._reset.bind(this), false);
22 this._resetButton.title = WebInspector.UIString("Fit available space"); 22 this._resetButton.title = WebInspector.UIString("Fit available space");
23 23
24 this._slidersContainer = this._container.element.createChild("div", "vbox re sponsive-design-sliders-container"); 24 this._slidersContainer = this._container.element.createChild("div", "vbox re sponsive-design-sliders-container");
25 var hbox = this._slidersContainer.createChild("div", "hbox flex-auto"); 25 var hbox = this._slidersContainer.createChild("div", "hbox flex-auto");
26 this._heightSliderContainer = this._slidersContainer.createChild("div", "hbo x responsive-design-slider-height"); 26 this._heightSliderContainer = this._slidersContainer.createChild("div", "hbo x responsive-design-slider-height");
27 this._pageContainer = hbox.createChild("div", "vbox flex-auto"); 27 this._pageContainer = hbox.createChild("div", "vbox flex-auto");
28 this._widthSliderContainer = hbox.createChild("div", "vbox responsive-design -slider-width"); 28 this._widthSliderContainer = hbox.createChild("div", "vbox responsive-design -slider-width");
29 29
30 this._widthSlider = this._widthSliderContainer.createChild("div", "responsiv e-design-slider-thumb"); 30 this._widthSlider = this._widthSliderContainer.createChild("div", "responsiv e-design-slider-thumb");
31 this._createResizer(this._widthSlider, false); 31 this._createResizer(this._widthSlider, false);
32 this._widthZeroButton = this._widthSlider.createChild("div", "responsive-des ign-zero-button"); 32 this._widthZeroButton = this._widthSlider.createChild("div", "responsive-des ign-zero-button");
33 this._widthZeroButton.addEventListener("click", this._zeroButtonClicked.bind (this, false)); 33 this._widthZeroButton.addEventListener("click", this._zeroButtonClicked.bind (this, false));
34 this._heightSlider = this._heightSliderContainer.createChild("div", "respons ive-design-slider-thumb"); 34 this._heightSlider = this._heightSliderContainer.createChild("div", "respons ive-design-slider-thumb");
35 this._createResizer(this._heightSlider, true); 35 this._createResizer(this._heightSlider, true);
36 this._heightZeroButton = this._heightSlider.createChild("div", "responsive-d esign-zero-button"); 36 this._heightZeroButton = this._heightSlider.createChild("div", "responsive-d esign-zero-button");
37 this._heightZeroButton.addEventListener("click", this._zeroButtonClicked.bin d(this, true)); 37 this._heightZeroButton.addEventListener("click", this._zeroButtonClicked.bin d(this, true));
38 38
39 this._inspectedPagePlaceholder = inspectedPagePlaceholder; 39 this._innerView = innerView;
40 inspectedPagePlaceholder.show(this.element); 40 this._innerView.show(this.element);
41 41
42 this._enabled = false; 42 this._enabled = false;
43
44 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.Zo omChanged, this._onZoomChanged, this);
45 WebInspector.dockController.addEventListener(WebInspector.DockController.Eve nts.DockSideChanged, this._updateOverridesSupportOnDockSideChange, this);
46 this._updateOverridesSupportOnDockSideChange();
47 }; 43 };
48 44
49 // Measured in DIP. 45 // Measured in DIP.
50 WebInspector.ResponsiveDesignView.SliderWidth = 19; 46 WebInspector.ResponsiveDesignView.SliderWidth = 19;
51 WebInspector.ResponsiveDesignView.RulerWidth = 23; 47 WebInspector.ResponsiveDesignView.RulerWidth = 23;
52 48
49 WebInspector.ResponsiveDesignView.Events = {
50 Toggled: "Toggled",
51 ResizeRequested: "ResizeRequested",
52 AvailableSizeChanged: "AvailableSizeChanged"
53 };
54
53 WebInspector.ResponsiveDesignView.prototype = { 55 WebInspector.ResponsiveDesignView.prototype = {
54 _updateOverridesSupportOnDockSideChange: function()
55 {
56 WebInspector.overridesSupport.setPageResizer(WebInspector.dockController .dockSide() !== WebInspector.DockController.State.Undocked ? this : null);
57 },
58
59 /** 56 /**
60 * WebInspector.OverridesSupport.PageResizer override. 57 * WebInspector.OverridesSupport.PageResizer override.
61 * @param {number} dipWidth 58 * @param {number} dipWidth
62 * @param {number} dipHeight 59 * @param {number} dipHeight
63 * @param {number} scale 60 * @param {number} scale
64 */ 61 */
65 enable: function(dipWidth, dipHeight, scale) 62 enable: function(dipWidth, dipHeight, scale)
66 { 63 {
67 if (!this._enabled) { 64 if (!this._enabled) {
65 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.E vents.ZoomChanged, this._updateUI, this);
68 this._ignoreResize = true; 66 this._ignoreResize = true;
69 this._enabled = true; 67 this._enabled = true;
70 this._inspectedPagePlaceholder.clearMinimumSizeAndMargins(); 68 this.dispatchEventToListeners(WebInspector.ResponsiveDesignView.Even ts.Toggled, true);
71 this._inspectedPagePlaceholder.show(this._pageContainer); 69 this._innerView.show(this._pageContainer);
72 this._container.show(this.element); 70 this._container.show(this.element);
73 delete this._ignoreResize; 71 delete this._ignoreResize;
74 } 72 }
75 73
76 this._scale = scale; 74 this._scale = scale;
77 this._dipWidth = dipWidth; 75 this._dipWidth = dipWidth;
78 this._dipHeight = dipHeight; 76 this._dipHeight = dipHeight;
79 this._updateUI(); 77 this._updateUI();
80 }, 78 },
81 79
82 /** 80 /**
83 * WebInspector.OverridesSupport.PageResizer override. 81 * WebInspector.OverridesSupport.PageResizer override.
84 */ 82 */
85 disable: function() 83 disable: function()
86 { 84 {
87 if (!this._enabled) 85 if (!this._enabled)
88 return; 86 return;
89 87
88 WebInspector.zoomManager.removeEventListener(WebInspector.ZoomManager.Ev ents.ZoomChanged, this._updateUI, this);
90 this._ignoreResize = true; 89 this._ignoreResize = true;
91 this._enabled = false; 90 this._enabled = false;
92 this._scale = 0; 91 this._scale = 0;
93 this._inspectedPagePlaceholder.restoreMinimumSizeAndMargins(); 92 this.dispatchEventToListeners(WebInspector.ResponsiveDesignView.Events.T oggled, false);
93 //this._inspectedPagePlaceholder.restoreMinimumSizeAndMargins();
94 this._container.detach(); 94 this._container.detach();
95 this._inspectedPagePlaceholder.show(this.element); 95 this._innerView.show(this.element);
96 delete this._ignoreResize; 96 delete this._ignoreResize;
97 }, 97 },
98 98
99 /** 99 /**
100 * WebInspector.OverridesSupport.PageResizer override. 100 * WebInspector.OverridesSupport.PageResizer override.
101 * @return {!Size} 101 * @return {!Size}
102 */ 102 */
103 availableDipSize: function() 103 availableDipSize: function()
104 { 104 {
105 if (typeof this._availableSize === "undefined") { 105 if (typeof this._availableSize === "undefined") {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 _onResizeUpdate: function(event) 142 _onResizeUpdate: function(event)
143 { 143 {
144 var cssOffset = event.data.currentPosition - event.data.startPosition; 144 var cssOffset = event.data.currentPosition - event.data.startPosition;
145 var dipOffset = cssOffset * WebInspector.zoomManager.zoomFactor(); 145 var dipOffset = cssOffset * WebInspector.zoomManager.zoomFactor();
146 var newSize = this._resizeStartSize + dipOffset; 146 var newSize = this._resizeStartSize + dipOffset;
147 var requested = new Size(this._dipWidth, this._dipHeight); 147 var requested = new Size(this._dipWidth, this._dipHeight);
148 if (event.target.isVertical()) 148 if (event.target.isVertical())
149 requested.height = Number.constrain(newSize, 1, this.availableDipSiz e().height); 149 requested.height = Number.constrain(newSize, 1, this.availableDipSiz e().height);
150 else 150 else
151 requested.width = Number.constrain(newSize, 1, this.availableDipSize ().width); 151 requested.width = Number.constrain(newSize, 1, this.availableDipSize ().width);
152 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.ResizeRequested, requested); 152 this.dispatchEventToListeners(WebInspector.ResponsiveDesignView.Events.R esizeRequested, requested);
153 }, 153 },
154 154
155 /** 155 /**
156 * @param {!WebInspector.Event} event 156 * @param {!WebInspector.Event} event
157 */ 157 */
158 _onResizeEnd: function(event) 158 _onResizeEnd: function(event)
159 { 159 {
160 delete this._resizeStartSize; 160 delete this._resizeStartSize;
161 }, 161 },
162 162
163 /** 163 /**
164 * @param {boolean} isHeight 164 * @param {boolean} isHeight
165 */ 165 */
166 _zeroButtonClicked: function(isHeight) 166 _zeroButtonClicked: function(isHeight)
167 { 167 {
168 var size = new Size(this._dipWidth, this._dipHeight); 168 var size = new Size(this._dipWidth, this._dipHeight);
169 var available = this.availableDipSize(); 169 var available = this.availableDipSize();
170 if (isHeight) 170 if (isHeight)
171 size.height = this._dipHeight ? 0 : available.height; 171 size.height = this._dipHeight ? 0 : available.height;
172 else 172 else
173 size.width = this._dipWidth ? 0 : available.width; 173 size.width = this._dipWidth ? 0 : available.width;
174 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.ResizeRequested, size); 174 this.dispatchEventToListeners(WebInspector.ResponsiveDesignView.Events.R esizeRequested, size);
175 }, 175 },
176 176
177 /** 177 /**
178 * Draws canvas of the specified css size in DevTools page space. 178 * Draws canvas of the specified css size in DevTools page space.
179 * Canvas contains grid and rulers. 179 * Canvas contains grid and rulers.
180 * @param {number} cssCanvasWidth 180 * @param {number} cssCanvasWidth
181 * @param {number} cssCanvasHeight 181 * @param {number} cssCanvasHeight
182 */ 182 */
183 _drawCanvas: function(cssCanvasWidth, cssCanvasHeight) 183 _drawCanvas: function(cssCanvasWidth, cssCanvasHeight)
184 { 184 {
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 this._heightSliderContainer.style.marginBottom = "-" + cssSliderWidt h; 311 this._heightSliderContainer.style.marginBottom = "-" + cssSliderWidt h;
312 this._widthSliderContainer.style.flexBasis = cssSliderWidth; 312 this._widthSliderContainer.style.flexBasis = cssSliderWidth;
313 this._widthSliderContainer.style.marginRight = "-" + cssSliderWidth; 313 this._widthSliderContainer.style.marginRight = "-" + cssSliderWidth;
314 } 314 }
315 315
316 var cssWidth = this._dipWidth ? (this._dipWidth / zoomFactor + "px") : ( availableDip.width / zoomFactor + "px"); 316 var cssWidth = this._dipWidth ? (this._dipWidth / zoomFactor + "px") : ( availableDip.width / zoomFactor + "px");
317 var cssHeight = this._dipHeight ? (this._dipHeight / zoomFactor + "px") : (availableDip.height / zoomFactor + "px"); 317 var cssHeight = this._dipHeight ? (this._dipHeight / zoomFactor + "px") : (availableDip.height / zoomFactor + "px");
318 if (this._cachedCssWidth !== cssWidth || this._cachedCssHeight !== cssHe ight) { 318 if (this._cachedCssWidth !== cssWidth || this._cachedCssHeight !== cssHe ight) {
319 this._slidersContainer.style.width = cssWidth; 319 this._slidersContainer.style.width = cssWidth;
320 this._slidersContainer.style.height = cssHeight; 320 this._slidersContainer.style.height = cssHeight;
321 this._inspectedPagePlaceholder.onResize(); 321 this._innerView.onResize();
322 } 322 }
323 323
324 if (this._cachedScale !== this._scale || this._cachedCssCanvasWidth !== cssCanvasWidth || this._cachedCssCanvasHeight !== cssCanvasHeight || this._cache dZoomFactor !== zoomFactor) 324 if (this._cachedScale !== this._scale || this._cachedCssCanvasWidth !== cssCanvasWidth || this._cachedCssCanvasHeight !== cssCanvasHeight || this._cache dZoomFactor !== zoomFactor)
325 this._drawCanvas(cssCanvasWidth, cssCanvasHeight); 325 this._drawCanvas(cssCanvasWidth, cssCanvasHeight);
326 326
327 this._cachedScale = this._scale; 327 this._cachedScale = this._scale;
328 this._cachedCssCanvasWidth = cssCanvasWidth; 328 this._cachedCssCanvasWidth = cssCanvasWidth;
329 this._cachedCssCanvasHeight = cssCanvasHeight; 329 this._cachedCssCanvasHeight = cssCanvasHeight;
330 this._cachedCssHeight = cssHeight; 330 this._cachedCssHeight = cssHeight;
331 this._cachedCssWidth = cssWidth; 331 this._cachedCssWidth = cssWidth;
332 this._cachedZoomFactor = zoomFactor; 332 this._cachedZoomFactor = zoomFactor;
333 }, 333 },
334 334
335 onResize: function() 335 onResize: function()
336 { 336 {
337 if (!this._enabled || this._ignoreResize) 337 if (!this._enabled || this._ignoreResize)
338 return; 338 return;
339 var oldSize = this._availableSize;
339 delete this._availableSize; 340 delete this._availableSize;
340 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.AvailableSizeChanged); 341 if (!this.availableDipSize().isEqual(oldSize))
342 this.dispatchEventToListeners(WebInspector.ResponsiveDesignView.Even ts.AvailableSizeChanged);
341 this._updateUI(); 343 this._updateUI();
342 }, 344 },
343 345
344 _onZoomChanged: function()
345 {
346 this._updateUI();
347 },
348
349 /** 346 /**
350 * Resets emulated size to available space. 347 * Resets emulated size to available space.
351 */ 348 */
352 _reset: function() 349 _reset: function()
353 { 350 {
354 this.dispatchEventToListeners(WebInspector.OverridesSupport.PageResizer. Events.ResizeRequested, this.availableDipSize()); 351 this.dispatchEventToListeners(WebInspector.ResponsiveDesignView.Events.R esizeRequested, this.availableDipSize());
355 }, 352 },
356 353
357 __proto__: WebInspector.VBox.prototype 354 __proto__: WebInspector.VBox.prototype
358 }; 355 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698