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

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

Issue 581133002: DevTools: polish the MQ ruler, move zoom controls to the top. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebaselined Created 6 years, 3 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 | Annotate | Revision Log
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.View} 7 * @extends {WebInspector.View}
8 * @implements {WebInspector.TargetManager.Observer} 8 * @implements {WebInspector.TargetManager.Observer}
9 */ 9 */
10 WebInspector.MediaQueryInspector = function() 10 WebInspector.MediaQueryInspector = function()
11 { 11 {
12 WebInspector.View.call(this); 12 WebInspector.View.call(this);
13 this.element.classList.add("media-inspector-view", "media-inspector-view-emp ty"); 13 this.element.classList.add("media-inspector-view", "media-inspector-view-emp ty");
14 this.element.addEventListener("click", this._onMediaQueryClicked.bind(this), false); 14 this.element.addEventListener("click", this._onMediaQueryClicked.bind(this), false);
15 this.element.addEventListener("contextmenu", this._onContextMenu.bind(this), false); 15 this.element.addEventListener("contextmenu", this._onContextMenu.bind(this), false);
16 this._mediaThrottler = new WebInspector.Throttler(100); 16 this._mediaThrottler = new WebInspector.Throttler(0);
17 17
18 this._offset = 0; 18 this._offset = 0;
19 this._scale = 1; 19 this._scale = 1;
20 this._lastReportedCount = 0; 20 this._lastReportedCount = 0;
21 21
22 WebInspector.targetManager.observeTargets(this); 22 WebInspector.targetManager.observeTargets(this);
23 23
24 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.Zo omChanged, this._renderMediaQueries.bind(this), this); 24 WebInspector.zoomManager.addEventListener(WebInspector.ZoomManager.Events.Zo omChanged, this._renderMediaQueries.bind(this), this);
25 } 25 }
26 26
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 263
264 if (!this.isShowing()) 264 if (!this.isShowing())
265 return; 265 return;
266 266
267 var oldChildrenCount = this.element.children.length; 267 var oldChildrenCount = this.element.children.length;
268 var scrollTop = this.element.scrollTop; 268 var scrollTop = this.element.scrollTop;
269 this.element.removeChildren(); 269 this.element.removeChildren();
270 270
271 var container = null; 271 var container = null;
272 for (var i = 0; i < markers.length; ++i) { 272 for (var i = 0; i < markers.length; ++i) {
273 if (!i || markers[i].model.section() !== markers[i - 1].model.sectio n()) { 273 if (!i || markers[i].model.section() !== markers[i - 1].model.sectio n())
274 container = this.element.createChild("div", "media-inspector-mar ker-container"); 274 container = this.element.createChild("div", "media-inspector-mar ker-container");
275 var handler = this._onMarkerContainerMouseMove.bind(this);
276 container.addEventListener("mousemove", handler, false);
277 container.addEventListener("mouseout", handler, false);
278 }
279 var marker = markers[i]; 275 var marker = markers[i];
280 var bar = this._createElementFromMediaQueryModel(marker.model); 276 var bar = this._createElementFromMediaQueryModel(marker.model);
281 bar._model = marker.model; 277 bar._model = marker.model;
282 bar._locations = marker.locations; 278 bar._locations = marker.locations;
283 bar.classList.toggle("media-inspector-marker-inactive", !marker.acti ve); 279 bar.classList.toggle("media-inspector-marker-inactive", !marker.acti ve);
284 container.appendChild(bar); 280 container.appendChild(bar);
285 } 281 }
286 this.element.scrollTop = scrollTop; 282 this.element.scrollTop = scrollTop;
287 this.element.classList.toggle("media-inspector-view-empty", !this.elemen t.children.length); 283 this.element.classList.toggle("media-inspector-view-empty", !this.elemen t.children.length);
288 if (this.element.children.length !== oldChildrenCount) 284 if (this.element.children.length !== oldChildrenCount)
289 this.dispatchEventToListeners(WebInspector.MediaQueryInspector.Event s.HeightUpdated); 285 this.dispatchEventToListeners(WebInspector.MediaQueryInspector.Event s.HeightUpdated);
290 }, 286 },
291 287
292 /** 288 /**
293 * @param {!Event} event
294 */
295 _onMarkerContainerMouseMove: function(event)
296 {
297 var mediaQueryMarkerContainer = event.target.enclosingNodeOrSelfWithClas s("media-inspector-marker-container");
298 if (!mediaQueryMarkerContainer)
299 return;
300 var children = mediaQueryMarkerContainer.children;
301 if (!children.length)
302 return;
303 for (var i = children.length - 1; i >= 0; --i) {
304 if (children[i].containsEventPoint(event)) {
305 this._highlightMarkerInContainer(children[i], mediaQueryMarkerCo ntainer);
306 return;
307 }
308 }
309 this._highlightMarkerInContainer(null, mediaQueryMarkerContainer);
310 },
311
312 /**
313 * @param {?Element} marker
314 * @param {!Element} container
315 */
316 _highlightMarkerInContainer: function(marker, container)
317 {
318 var children = container.children;
319 var found = !marker;
320 for (var i = children.length - 1; i >= 0; --i) {
321 if (found) {
322 children[i].classList.remove("media-inspector-marker-highlight") ;
323 children[i].classList.remove("media-inspector-marker-under-highl ighted");
324 } else if (children[i] === marker) {
325 children[i].classList.add("media-inspector-marker-highlight");
326 children[i].classList.remove("media-inspector-marker-under-highl ighted");
327 found = true;
328 } else {
329 children[i].classList.remove("media-inspector-marker-highlight") ;
330 children[i].classList.add("media-inspector-marker-under-highligh ted");
331 }
332 }
333 },
334
335 /**
336 * @return {number} 289 * @return {number}
337 */ 290 */
338 _zoomFactor: function() 291 _zoomFactor: function()
339 { 292 {
340 return WebInspector.zoomManager.zoomFactor() / this._scale; 293 return WebInspector.zoomManager.zoomFactor() / this._scale;
341 }, 294 },
342 295
343 wasShown: function() 296 wasShown: function()
344 { 297 {
345 this._renderMediaQueries(); 298 this._renderMediaQueries();
(...skipping 20 matching lines...) Expand all
366 var widthPixelValue = null; 319 var widthPixelValue = null;
367 if (model.maxWidthExpression() && model.minWidthExpression()) 320 if (model.maxWidthExpression() && model.minWidthExpression())
368 widthPixelValue = (model.maxWidthExpression().computedLength() - min WidthValue) / zoomFactor; 321 widthPixelValue = (model.maxWidthExpression().computedLength() - min WidthValue) / zoomFactor;
369 else if (model.maxWidthExpression()) 322 else if (model.maxWidthExpression())
370 widthPixelValue = (model.maxWidthExpression().computedLength() - thi s._offset) / zoomFactor; 323 widthPixelValue = (model.maxWidthExpression().computedLength() - thi s._offset) / zoomFactor;
371 else 324 else
372 markerElement.style.right = "0"; 325 markerElement.style.right = "0";
373 if (typeof widthPixelValue === "number") 326 if (typeof widthPixelValue === "number")
374 markerElement.style.width = widthPixelValue + "px"; 327 markerElement.style.width = widthPixelValue + "px";
375 328
329 if (model.minWidthExpression()) {
330 var labelClass = model.section() === WebInspector.MediaQueryInspecto r.Section.MinMax ? "media-inspector-label-right" : "media-inspector-label-left";
331 var labelContainer = markerElement.createChild("div", "media-inspect or-marker-label-container media-inspector-marker-label-container-left");
332 labelContainer.createChild("span", "media-inspector-marker-label " + labelClass).textContent = model.minWidthExpression().value() + model.minWidthEx pression().unit();
333 }
334
376 if (model.maxWidthExpression()) { 335 if (model.maxWidthExpression()) {
377 var labelClass = model.section() === WebInspector.MediaQueryInspecto r.Section.MinMax ? "media-inspector-label-left" : "media-inspector-label-right"; 336 var labelClass = model.section() === WebInspector.MediaQueryInspecto r.Section.MinMax ? "media-inspector-label-left" : "media-inspector-label-right";
378 var labelContainer = markerElement.createChild("div", "media-inspect or-marker-label-container media-inspector-marker-label-container-right"); 337 var labelContainer = markerElement.createChild("div", "media-inspect or-marker-label-container media-inspector-marker-label-container-right");
379 labelContainer.createChild("div", "media-inspector-marker-serif"); 338 labelContainer.createChild("span", "media-inspector-marker-label " + labelClass).textContent = model.maxWidthExpression().value() + model.maxWidthEx pression().unit();
380 labelContainer.createChild("span", "media-inspector-marker-label " + labelClass).textContent = model.maxWidthExpression().computedLength() + "px";
381 } 339 }
382 340 markerElement.title = model.mediaText();
383 if (model.minWidthExpression()) {
384 var labelClass = model.section() === WebInspector.MediaQueryInspecto r.Section.MinMax ? "media-inspector-label-right" : "media-inspector-label-left";
385 var labelContainer = markerElement.createChild("div", "media-inspect or-marker-label-container media-inspector-marker-label-container-left");
386 labelContainer.createChild("div", "media-inspector-marker-serif");
387 labelContainer.createChild("span", "media-inspector-marker-label " + labelClass).textContent = model.minWidthExpression().computedLength() + "px";
388 }
389 341
390 return markerElement; 342 return markerElement;
391 }, 343 },
392 344
393 __proto__: WebInspector.View.prototype 345 __proto__: WebInspector.View.prototype
394 }; 346 };
395 347
396 /** 348 /**
397 * @constructor 349 * @constructor
398 * @param {!WebInspector.CSSMedia} cssMedia 350 * @param {!WebInspector.CSSMedia} cssMedia
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 }, 488 },
537 489
538 /** 490 /**
539 * @return {boolean} 491 * @return {boolean}
540 */ 492 */
541 active: function() 493 active: function()
542 { 494 {
543 return this._active; 495 return this._active;
544 } 496 }
545 } 497 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/responsiveDesignView.css ('k') | Source/devtools/front_end/toolbox/ResponsiveDesignView.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698