| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 library script_inset_element; | 5 library script_inset_element; | 
| 6 | 6 | 
| 7 import 'dart:async'; | 7 import 'dart:async'; | 
| 8 import 'dart:html'; | 8 import 'dart:html'; | 
| 9 import 'observatory_element.dart'; | 9 import 'observatory_element.dart'; | 
| 10 import 'service_ref.dart'; | 10 import 'service_ref.dart'; | 
| 11 import 'package:observatory/service.dart'; | 11 import 'package:observatory/service.dart'; | 
| 12 import 'package:polymer/polymer.dart'; | 12 import 'package:polymer/polymer.dart'; | 
| 13 | 13 | 
| 14 const nbsp = "\u00A0"; | 14 const nbsp = "\u00A0"; | 
| 15 | 15 | 
| 16 void addInfoBox(content, infoBox) { | 16 void addInfoBox(content, infoBox) { | 
| 17   infoBox.style.position = 'absolute'; | 17   infoBox.style.position = 'absolute'; | 
| 18   infoBox.style.padding = '1em'; | 18   infoBox.style.padding = '1em'; | 
| 19   infoBox.style.border = 'solid black 2px'; | 19   infoBox.style.border = 'solid black 2px'; | 
| 20   infoBox.style.zIndex = '10'; | 20   infoBox.style.zIndex = '10'; | 
| 21   infoBox.style.backgroundColor = 'white'; | 21   infoBox.style.backgroundColor = 'white'; | 
| 22 | 22   infoBox.style.cursor = 'auto'; | 
| 23   infoBox.style.display = 'none';  // Initially hidden. | 23   infoBox.style.display = 'none';  // Initially hidden. | 
| 24 | 24 | 
| 25   var show = false; | 25   var show = false; | 
| 26   content.onClick.listen((event) { | 26   content.onClick.listen((event) { | 
| 27     show = !show; | 27     show = !show; | 
| 28     infoBox.style.display = show ? 'block' : 'none'; | 28     infoBox.style.display = show ? 'block' : 'none'; | 
|  | 29     content.style.backgroundColor = show ? 'white' : ''; | 
| 29   }); | 30   }); | 
| 30 | 31 | 
| 31   // Causes infoBox to be positioned relative to the bottom-left of content. | 32   // Causes infoBox to be positioned relative to the bottom-left of content. | 
| 32   content.style.display = 'inline-block'; | 33   content.style.display = 'inline-block'; | 
|  | 34   content.style.cursor = 'pointer'; | 
| 33   content.append(infoBox); | 35   content.append(infoBox); | 
| 34 } | 36 } | 
| 35 | 37 | 
| 36 abstract class Annotation { | 38 abstract class Annotation { | 
| 37   int line; | 39   int line; | 
| 38   int columnStart; | 40   int columnStart; | 
| 39   int columnStop; | 41   int columnStop; | 
| 40 | 42 | 
| 41   void applyStyleTo(element); | 43   void applyStyleTo(element); | 
| 42 } | 44 } | 
| 43 | 45 | 
| 44 class CurrentExecutionAnnotation extends Annotation { | 46 class CurrentExecutionAnnotation extends Annotation { | 
| 45   void applyStyleTo(element) { | 47   void applyStyleTo(element) { | 
| 46     if (element == null) { | 48     if (element == null) { | 
| 47       return;  // TODO(rmacnak): Handling overlapping annotations. | 49       return;  // TODO(rmacnak): Handling overlapping annotations. | 
| 48     } | 50     } | 
| 49     element.classes.add("currentCol"); | 51     element.classes.add("currentCol"); | 
| 50     element.title = "Current execution"; | 52     element.title = "Current execution"; | 
| 51   } | 53   } | 
| 52 } | 54 } | 
| 53 | 55 | 
| 54 class CallSiteAnnotation extends Annotation { | 56 class CallSiteAnnotation extends Annotation { | 
| 55   CallSite callSite; | 57   CallSite callSite; | 
| 56 | 58 | 
| 57   Element row() { | 59   Element row([content]) { | 
| 58     var e = new DivElement(); | 60     var e = new DivElement(); | 
| 59     e.style.display = "table-row"; | 61     e.style.display = "table-row"; | 
|  | 62     if (content is String) e.text = content; | 
| 60     return e; | 63     return e; | 
| 61   } | 64   } | 
| 62 | 65 | 
| 63   Element cell(content) { | 66   Element cell(content) { | 
| 64     var e = new DivElement(); | 67     var e = new DivElement(); | 
| 65     e.style.display = "table-cell"; | 68     e.style.display = "table-cell"; | 
| 66     e.style.padding = "3px"; | 69     e.style.padding = "3px"; | 
| 67     if (content is String) e.text = content; | 70     if (content is String) e.text = content; | 
| 68     if (content is Element) e.children.add(content); | 71     if (content is Element) e.children.add(content); | 
| 69     return e; | 72     return e; | 
| 70   } | 73   } | 
| 71 | 74 | 
| 72   Element serviceRef(object) { | 75   Element serviceRef(object) { | 
| 73     AnyServiceRefElement e = new Element.tag("any-service-ref"); | 76     AnyServiceRefElement e = new Element.tag("any-service-ref"); | 
| 74     e.ref = object; | 77     e.ref = object; | 
| 75     return e; | 78     return e; | 
| 76   } | 79   } | 
| 77 | 80 | 
| 78   Element entriesTable() { | 81   Element entriesTable() { | 
| 79     var e = new DivElement(); | 82     var e = new DivElement(); | 
| 80     e.style.display = "table"; | 83     e.style.display = "table"; | 
| 81     e.style.color = "#333"; | 84     e.style.color = "#333"; | 
| 82     e.style.font = "400 14px 'Montserrat', sans-serif"; | 85     e.style.font = "400 14px 'Montserrat', sans-serif"; | 
| 83 | 86 | 
| 84     var r = row(); | 87     if (callSite.entries.isEmpty) { | 
| 85     r.append(cell("Container")); | 88       e.append(row('Did not execute')); | 
| 86     r.append(cell("Count")); | 89     } else { | 
| 87     r.append(cell("Target")); | 90       var r = row(); | 
| 88     e.append(r); | 91       r.append(cell("Container")); | 
|  | 92       r.append(cell("Count")); | 
|  | 93       r.append(cell("Target")); | 
|  | 94       e.append(r); | 
| 89 | 95 | 
| 90     for (var entry in callSite.entries) { | 96       for (var entry in callSite.entries) { | 
| 91       var r = row(); | 97         var r = row(); | 
| 92       r.append(cell(serviceRef(entry.receiverContainer))); | 98         r.append(cell(serviceRef(entry.receiverContainer))); | 
| 93       r.append(cell(entry.count.toString())); | 99         r.append(cell(entry.count.toString())); | 
| 94       r.append(cell(serviceRef(entry.target))); | 100         r.append(cell(serviceRef(entry.target))); | 
| 95       e.append(r); | 101         e.append(r); | 
|  | 102       } | 
| 96     } | 103     } | 
| 97 | 104 | 
| 98     return e; | 105     return e; | 
| 99   } | 106   } | 
| 100 | 107 | 
| 101   void applyStyleTo(element) { | 108   void applyStyleTo(element) { | 
| 102     if (element == null) { | 109     if (element == null) { | 
| 103       return;  // TODO(rmacnak): Handling overlapping annotations. | 110       return;  // TODO(rmacnak): Handling overlapping annotations. | 
| 104     } | 111     } | 
| 105     element.style.fontWeight = "bold"; | 112     element.style.fontWeight = "bold"; | 
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 400         pending.add(line.script.isolate.removeBreakpoint(bpt)); | 407         pending.add(line.script.isolate.removeBreakpoint(bpt)); | 
| 401       } | 408       } | 
| 402       Future.wait(pending).then((_) { | 409       Future.wait(pending).then((_) { | 
| 403         busy = false; | 410         busy = false; | 
| 404       }); | 411       }); | 
| 405     } | 412     } | 
| 406   } | 413   } | 
| 407 | 414 | 
| 408   BreakpointToggleElement.created() : super.created(); | 415   BreakpointToggleElement.created() : super.created(); | 
| 409 } | 416 } | 
| OLD | NEW | 
|---|