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

Unified Diff: Source/devtools/front_end/Placard.js

Issue 80383004: DevTools: Show asynchronous call stacks on frontend. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: Source/devtools/front_end/Placard.js
diff --git a/Source/devtools/front_end/Placard.js b/Source/devtools/front_end/Placard.js
index 4e91a66907c1a5580f935cd4ad73113884493557..eebdf609b0892fea43624d69bd569830e0915219 100644
--- a/Source/devtools/front_end/Placard.js
+++ b/Source/devtools/front_end/Placard.js
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -30,18 +31,11 @@
*/
WebInspector.Placard = function(title, subtitle)
{
- this.element = document.createElement("div");
- this.element.className = "placard";
+ this.element = document.createElementWithClass("div", "placard");
this.element.placard = this;
- this.titleElement = document.createElement("div");
- this.titleElement.className = "title";
-
- this.subtitleElement = document.createElement("div");
- this.subtitleElement.className = "subtitle";
-
- this.element.appendChild(this.subtitleElement);
- this.element.appendChild(this.titleElement);
+ this.subtitleElement = this.element.createChild("div", "subtitle");
+ this.titleElement = this.element.createChild("div", "title");
this.title = title;
this.subtitle = subtitle;
@@ -91,10 +85,23 @@ WebInspector.Placard.prototype = {
this.deselect();
},
+ /** @return {!WebInspector.PlacardGroup|undefined} */
+ get group()
yurys 2013/12/06 12:36:54 style nit: we've decided to avoid getters/setters
aandrey 2013/12/06 16:09:24 Done.
+ {
+ return this._group;
+ },
+
+ set group(x)
+ {
+ this._group = x;
+ },
+
select: function()
{
if (this._selected)
return;
+ if (this._group)
+ this._group.expanded = true;
this._selected = true;
this.element.addStyleClass("selected");
},
@@ -116,3 +123,80 @@ WebInspector.Placard.prototype = {
{
}
}
+
+/**
+ * @constructor
+ * @param {string} title
+ * @param {!Array.<!WebInspector.Placard>} placards
+ */
+WebInspector.PlacardGroup = function(title, placards)
+{
+ this.element = document.createElementWithClass("div", "placard placard-group");
+ this.element.addEventListener("click", this._clicked.bind(this), false);
+ this.placards = placards;
+ this._expanded = false;
+ this.title = title;
+
+ for (var i = 0; i < placards.length; ++i)
+ placards[i].group = this;
+}
+
+WebInspector.PlacardGroup.prototype = {
+ /** @return {string} */
+ get title()
yurys 2013/12/06 12:36:54 ditto.
aandrey 2013/12/06 16:09:24 Done.
+ {
+ return this._title;
+ },
+
+ set title(x)
+ {
+ this._title = x;
+ this.element.textContent = x;
+ },
+
+ /** @return {boolean} */
+ get expanded()
+ {
+ return this._expanded;
+ },
+
+ set expanded(x)
+ {
+ if (this._expanded === x)
+ return;
+ if (x) {
+ var parent = this.element.parentElement;
+ if (!parent)
+ return;
+ var sibling = this.element.nextSibling;
+ for (var i = 0, placard; placard = this.placards[i]; ++i) {
yurys 2013/12/06 12:36:54 style: i < this.placards.length, we don't use this
aandrey 2013/12/06 16:09:24 Done.
+ placard.element.addStyleClass("grouped");
+ parent.insertBefore(placard.element, sibling);
+ }
+ } else {
+ if (this.selected)
+ return;
+ for (var i = 0, placard; placard = this.placards[i]; ++i) {
yurys 2013/12/06 12:36:54 ditto.
aandrey 2013/12/06 16:09:24 Done.
+ placard.element.removeStyleClass("grouped");
+ placard.element.remove();
+ }
+ }
+ this._expanded = x;
+ },
+
+ /** @return {boolean} */
+ get selected()
+ {
+ for (var i = 0, placard; placard = this.placards[i]; ++i) {
yurys 2013/12/06 12:36:54 ditto
aandrey 2013/12/06 16:09:24 Done.
+ if (placard.selected)
+ return true;
+ }
+ return false;
+ },
+
+ _clicked: function()
+ {
+ this.expanded = !this._expanded;
+ this.element.enableStyleClass("expanded", this._expanded);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698