Implement the renaming part of moving.
authorRobert Sesek <rsesek@bluestatic.org>
Mon, 4 Oct 2010 20:57:08 +0000 (16:57 -0400)
committerRobert Sesek <rsesek@bluestatic.org>
Mon, 4 Oct 2010 20:57:08 +0000 (16:57 -0400)
web_frontend/path_control.js
web_frontend/version.js

index 820fa4344bf2e1d5faf6ae441ca6b7593402fc80..deaab5876230c7e2fec50696a999d6f41427749a 100644 (file)
@@ -8,6 +8,7 @@
 //
 
 goog.provide('armadillo.PathControl');
+goog.provide('armadillo.PathControl.NameControlRenderer_');
 
 goog.require('goog.array');
 goog.require('goog.ui.Component');
@@ -45,6 +46,12 @@ armadillo.PathControl = function(path, editLastComponent, opt_domHelper) {
    */
   this.editableLastComponent_ = editLastComponent;
 
+  /**
+   * Control UI for the name component of the path.
+   * @type  {goog.ui.Control}
+   */
+  this.nameControl_ = null;
+
   /**
    * Event Handler
    * @type  {goog.events.EventHandler}
@@ -59,6 +66,8 @@ goog.inherits(armadillo.PathControl, goog.ui.Component);
  */
 armadillo.PathControl.prototype.disposeInternal = function() {
   armadillo.PathControl.superClass_.disposeInternal.call(this);
+  this.nameControl_ = null;
+
   this.eh_.dispose();
   this.eh_ = null;
 };
@@ -81,6 +90,14 @@ armadillo.PathControl.prototype.getPath = function() {
   return app.joinPath(this.path_, this.name_);
 };
 
+/**
+ * Gets the name control.
+ * @returns  {goog.ui.Control}
+ */
+armadillo.PathControl.prototype.getNameControl = function() {
+  return this.nameControl_;
+};
+
 /**
  * Creates a new path control object.
  */
@@ -119,24 +136,35 @@ armadillo.PathControl.prototype.decorateInternal = function(element) {
     path = app.joinPath(path, part);
   }, this);
 
-  var nameComponent = null;
   if (this.editableLastComponent_) {
     var attrs = {
       'type' : 'text',
       'name' : 'pathName',
       'value' : this.name_
     };
-    nameComponent = new goog.ui.Control(this.dom_.createDom('input', attrs));
-    nameComponent.setAllowTextSelection(true);
-    nameComponent.setHandleMouseEvents(true);
-    this.addChild(nameComponent, true);
-    this.eh_.listen(nameComponent.getElement(), goog.events.EventType.CHANGE,
+    this.nameControl_ = new goog.ui.Control(this.dom_.createDom('input', attrs),
+        new armadillo.PathControl.NameControlRenderer_());
+    this.nameControl_.setAllowTextSelection(true);
+    this.nameControl_.setHandleMouseEvents(true);
+    this.addChild(this.nameControl_, true);
+
+    this.eh_.listen(this.nameControl_.getElement(), goog.events.EventType.CHANGE,
+        this.nameChanged_, false, this);
+    this.eh_.listen(this.nameControl_.getElement(), goog.events.EventType.KEYDOWN,
         this.nameChanged_, false, this);
   } else {
-    nameComponent = new goog.ui.Control(this.name_);
-    this.addChild(nameComponent, true);
+    this.nameControl_ = new goog.ui.Control(this.name_);
+    this.addChild(this.nameControl_, true);
   }
-  goog.dom.classes.add(nameComponent.getElement(), 'goog-inline-block');
+  goog.dom.classes.add(this.nameControl_.getElement(), 'goog-inline-block');
+};
+
+/**
+ * @inheritDoc
+ */
+armadillo.PathControl.prototype.enterDocument = function() {
+  console.log('enter document ' + this.nameControl_.getElement());
+  this.nameControl_.getElement().focus();
 };
 
 /**
@@ -214,4 +242,23 @@ armadillo.PathControl.prototype.nameChanged_ = function(e) {
   // TODO: assert(this.editableLastComponent_)
   console.log('new name = ' + e.target.value);
   this.name_ = e.target.value;
+  e.stopPropagation();
+  return true;
+};
+
+/**
+ * Renderer for the Name Control of the Path Control
+ * @constructor_
+ */
+armadillo.PathControl.NameControlRenderer_ = function() {
+  goog.ui.ControlRenderer.call(this);
+};
+goog.inherits(armadillo.PathControl.NameControlRenderer_, goog.ui.ControlRenderer);
+
+armadillo.PathControl.NameControlRenderer_.prototype.createDom = function(control) {
+  var content = control.getContent();
+  if (content instanceof HTMLElement) {
+    return content;
+  }
+  return armadillo.PathControl.NameControlRenderer_.superClass_.createDom.call(this, control);
 };
index 47af1a9bdcc8f6ae64eb76ebf711c9ff024b6a94..4fe27d3220cd52f7ed7111dad71f0cd40c3f3295 100644 (file)
@@ -11,5 +11,5 @@ goog.provide('armadillo.Version');
 
 armadillo.Version.MAJOR = 0;
 armadillo.Version.MINOR = 2;
-armadillo.Version.BUILD = 217;
-armadillo.Version.STAMP = 1286210508;
+armadillo.Version.BUILD = 246;
+armadillo.Version.STAMP = 1286225290;