| Index: src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart
 | 
| diff --git a/src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart b/src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..3c11f3d52fadbdef1e44a902c93524c119c54915
 | 
| --- /dev/null
 | 
| +++ b/src/site/articles/trydart/examples/7-piratebadge_json/piratebadge.dart
 | 
| @@ -0,0 +1,129 @@
 | 
| +// Copyright (c) 2012, 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.
 | 
| +
 | 
| +
 | 
| +// Demonstrates:
 | 
| +// list, random, string interpolation, cascade, fat arrow,
 | 
| +// named constructors.
 | 
| +// optional parameters.
 | 
| +// getters, setters,
 | 
| +// httprequest, JSON
 | 
| +// static methods/fields
 | 
| +// cascades (onclick listen...piratename.male.name
 | 
| +
 | 
| +import 'dart:html';
 | 
| +import 'dart:math';
 | 
| +import 'dart:convert';
 | 
| +
 | 
| +InputElement inputNameElement;
 | 
| +ButtonElement genButtonElement;
 | 
| +
 | 
| +bool useRandomName = false;
 | 
| +
 | 
| +RadioButtonInputElement captainRadioElement;
 | 
| +RadioButtonInputElement scallywagRadioElement;
 | 
| +
 | 
| +void  main() {
 | 
| +  inputNameElement = query('#inputName');
 | 
| +  inputNameElement.onChange.listen(generateBadge);
 | 
| +
 | 
| +  genButtonElement = query('#generateButton');
 | 
| +  genButtonElement.onClick.listen(generateBadge);
 | 
| +
 | 
| +  query('#useRandomName').onClick.listen(useRandomNameClickHandler);
 | 
| +
 | 
| +  captainRadioElement = query('#captain');
 | 
| +  scallywagRadioElement = query('#scallywag');
 | 
| +
 | 
| +  PirateName.initialize();
 | 
| +}
 | 
| +
 | 
| +void generateBadge(Event event) { 
 | 
| +  if (!useRandomName) {
 | 
| +    query('#badgeName').text = new PirateName(firstName: inputNameElement.value).name;
 | 
| +  } else if (scallywagRadioElement.checked) {
 | 
| +    query('#badgeName').text = new PirateName.scallywag().name;
 | 
| +  } else {
 | 
| +    query('#badgeName').text = new PirateName.captain().name;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +void useRandomNameClickHandler(MouseEvent e) { 
 | 
| +  if ((e.target as CheckboxInputElement).checked) {
 | 
| +    genButtonElement.disabled = false;
 | 
| +    captainRadioElement.disabled = false;
 | 
| +    scallywagRadioElement.disabled = false;
 | 
| +    inputNameElement
 | 
| +        ..disabled = true
 | 
| +        ..value = ''
 | 
| +        ..placeholder = '';
 | 
| +    useRandomName = true;
 | 
| +  } else {
 | 
| +    genButtonElement.disabled = true;
 | 
| +    captainRadioElement.disabled = true;
 | 
| +    scallywagRadioElement.disabled = true;
 | 
| +    inputNameElement
 | 
| +        ..disabled = false
 | 
| +        ..placeholder = 'Your name here';
 | 
| +    useRandomName = false;
 | 
| +  }
 | 
| +}
 | 
| +  
 | 
| +//library models;
 | 
| +class PirateName {
 | 
| +  
 | 
| +  Random indexGen = new Random();
 | 
| +  
 | 
| +  String _pirateName;
 | 
| +  
 | 
| +  String get name => _pirateName;
 | 
| +         set name(String value) => _pirateName = value;
 | 
| +         
 | 
| +  String toString() => name;
 | 
| +
 | 
| +  PirateName({String firstName}) {
 | 
| +    if (firstName == null) {
 | 
| +      firstName = names[indexGen.nextInt(names.length)];
 | 
| +    }
 | 
| +    _pirateName = '$firstName';
 | 
| +  }
 | 
| +
 | 
| +  PirateName.captain() {
 | 
| +    String firstName = names[indexGen.nextInt(names.length)];
 | 
| +    String appellation = captains[indexGen.nextInt(captains.length)];
 | 
| +    _pirateName = '$firstName the $appellation';
 | 
| +  }
 | 
| +
 | 
| +  PirateName.scallywag() {
 | 
| +    String firstName = names[indexGen.nextInt(names.length)];
 | 
| +    String appellation = scallywags[indexGen.nextInt(scallywags.length)];
 | 
| +    _pirateName = '$firstName the $appellation';
 | 
| +  }
 | 
| +
 | 
| +  static List<String> names = [];
 | 
| +  static List<String> captains = [];
 | 
| +  static List<String> scallywags = [];
 | 
| +
 | 
| +  static void initialize() {
 | 
| +    makeRequest();
 | 
| +  }
 | 
| +  
 | 
| +  static void makeRequest(/*Event e*/) {
 | 
| +    var path = 'piratenames.json';
 | 
| +    HttpRequest.getString(path)
 | 
| +      .then(processString)
 | 
| +        .catchError(handleError);
 | 
| +  }
 | 
| +
 | 
| +  static handleError(Exception error) {
 | 
| +    print('Request failed.');
 | 
| +  }
 | 
| +
 | 
| +  static processString(String jsonString) {
 | 
| +    List<List> pirateNames = JSON.decode(jsonString);
 | 
| +    names = pirateNames[0];
 | 
| +    captains = pirateNames[1];
 | 
| +    scallywags = pirateNames[2];
 | 
| +  }
 | 
| +}
 | 
| 
 |