Chromium Code Reviews| Index: runtime/bin/vmservice/client/lib/src/elements/eval_box.dart |
| diff --git a/runtime/bin/vmservice/client/lib/src/elements/eval_box.dart b/runtime/bin/vmservice/client/lib/src/elements/eval_box.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2b9eb64048957c4d1a288f33a237ed02ee4b28a8 |
| --- /dev/null |
| +++ b/runtime/bin/vmservice/client/lib/src/elements/eval_box.dart |
| @@ -0,0 +1,56 @@ |
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +library eval_box_element; |
| + |
| +import 'dart:async'; |
| +import 'dart:html'; |
| +import 'observatory_element.dart'; |
| +import 'package:polymer/polymer.dart'; |
| + |
| + |
| +typedef Future<ObservableMap> evalType(String text); |
| + |
| + |
| +@CustomTag('eval-box') |
| +class EvalBoxElement extends ObservatoryElement { |
| + @observable String text; |
| + @observable String lineMode = "1-line"; |
| + |
| + @published evalType callback; |
| + @published ObservableList expressions = toObservable([]); |
|
Cutch
2014/03/11 22:06:46
Should this be marked as @observable instead of @p
turnidge
2014/03/11 22:23:22
Done.
|
| + @published ObservableList results = toObservable([]); |
| + |
| + void updateLineMode(Event e, var detail, Node target) { |
| + lineMode = (e.target as InputElement).value; |
| + if (lineMode == '1-line') { |
| + text = text.replaceAll('\n', ' '); |
| + } |
| + } |
| + |
| + void eval(Event e, var detail, Node target) { |
| + // Prevent any form action. |
| + e.preventDefault(); |
| + |
| + // Clear the text box. |
| + var expr = text; |
| + text = ''; |
| + |
| + // Use provided callback to eval the expression. |
| + if (callback != null) { |
| + var map = toObservable({}); |
| + map['expr'] = expr; |
| + results.insert(0, map); |
| + callback(expr).then((result) { |
| + map['value'] = result; |
| + }); |
| + } |
| + } |
| + |
| + void selectExpr(MouseEvent e) { |
| + text = e.target.getAttribute('expr'); |
| + } |
| + |
| + EvalBoxElement.created() : super.created(); |
| +} |