anchor.diff:  }
   
   class GitCloneAction extends SparkActionWithDialog {
  +  InputElement projectNameElement;
  +  InputElement repoUrlElement;
  +
     GitCloneAction(Spark spark, Element dialog)
  -      : super(spark, "git-clone", "Git Clone…", dialog);
  +      : super(spark, "git-clone", "Git Clone…", dialog) {
  +    projectNameElement = _dialog.element.querySelector("#gitProjectName");
  +    repoUrlElement = _dialog.element.querySelector("#gitRepoUrl");
  +    _triggerOnReturn(repoUrlElement);
  +  }
   
     void _invoke([Object context]) {
       _dialog.show();
  
positive.code: 
  class FileRenameAction extends SparkActionWithDialog implements ContextAction {
    ws.Resource resource;
    // TODO: Rename this to _fileName.
    InputElement _element;
  
    FileRenameAction(Spark spark, Element dialog)
        : super(spark, "file-rename", "Rename…", dialog) {
      _element = _dialog.element.querySelector("#fileName");
    }
  
    void _invoke([List<ws.Resource> resources]) {
     if (resources != null && resources.isNotEmpty) {
       resource = resources.first;
       _element.value = resource.name;
       _dialog.show();
     }
    }
  
    void _commit() {
      if (_element.value.isNotEmpty) {
        spark._closeOpenEditor(resource);
        resource.rename(_element.value);
      }
    }
  
  
negative.code:   ws.Folder folder;
  
    FileNewAction(Spark spark, Element dialog)
        : super(spark, "file-new", "New File…", dialog) {
      defaultBinding("ctrl-n");
      _nameElement = _dialog.element.querySelector("#fileName");
      _triggerOnReturn(_nameElement);
    }
  
    void _invoke([List<ws.Folder> folders]) {
  