/* start module: Trees */
Trees = $pyjs.loaded_modules["Trees"] = function (__mod_name__) {
if(Trees.__was_initialized__) return Trees;
Trees.__was_initialized__ = true;
if (__mod_name__ == null) __mod_name__ = 'Trees';
var __name__ = Trees.__name__ = __mod_name__;
 pyjslib.__import__(['Sink.Sink', 'Sink'], 'Sink.Sink', 'Trees')
 Trees.Sink = $pyjs.__modules__.Sink.Sink;
 pyjslib.__import__(['Sink.SinkInfo', 'Sink'], 'Sink.SinkInfo', 'Trees')
 Trees.SinkInfo = $pyjs.__modules__.Sink.SinkInfo;
 pyjslib.__import__(['pyjamas.ui.Tree.Tree', 'pyjamas.ui.Tree'], 'pyjamas.ui.Tree.Tree', 'Trees')
 Trees.Tree = $pyjs.__modules__.pyjamas.ui.Tree.Tree;
 pyjslib.__import__(['pyjamas.ui.TreeItem.TreeItem', 'pyjamas.ui.TreeItem'], 'pyjamas.ui.TreeItem.TreeItem', 'Trees')
 Trees.TreeItem = $pyjs.__modules__.pyjamas.ui.TreeItem.TreeItem;
Trees.Trees = (function(){
	var cls_instance = pyjs__class_instance('Trees');
	var cls_definition = new Object();
	cls_definition.__md5__ = 'c3fffaf7b16c45fe9b29086534ae2009';
	cls_definition.__init__ = pyjs__bind_method(cls_instance, '__init__', function() {
		if (this.__is_instance__ === true) {
			var self = this;
		} else {
			var self = arguments[0];
		}
		var i;
		Trees.Sink.__init__(self);
		self.fProto = new pyjslib.List([Trees.Proto(String('Beethoven'), new pyjslib.List([Trees.Proto(String('Concertos'), new pyjslib.List([Trees.Proto(String('No. 1 - C')), Trees.Proto(String('No. 2 - B-Flat Major')), Trees.Proto(String('No. 3 - C Minor')), Trees.Proto(String('No. 4 - G Major')), Trees.Proto(String('No. 5 - E-Flat Major'))])), Trees.Proto(String('Quartets'), new pyjslib.List([Trees.Proto(String('Six String Quartets')), Trees.Proto(String('Three String Quartets')), Trees.Proto(String('Grosse Fugue for String Quartets'))])), Trees.Proto(String('Sonatas'), new pyjslib.List([Trees.Proto(String('Sonata in A Minor')), Trees.Proto(String('Sonata in F Major'))])), Trees.Proto(String('Symphonies'), new pyjslib.List([Trees.Proto(String('No. 1 - C Major')), Trees.Proto(String('No. 2 - D Major')), Trees.Proto(String('No. 3 - E-Flat Major')), Trees.Proto(String('No. 4 - B-Flat Major')), Trees.Proto(String('No. 5 - C Minor')), Trees.Proto(String('No. 6 - F Major')), Trees.Proto(String('No. 7 - A Major')), Trees.Proto(String('No. 8 - F Major')), Trees.Proto(String('No. 9 - D Minor'))]))])), Trees.Proto(String('Brahms'), new pyjslib.List([Trees.Proto(String('Concertos'), new pyjslib.List([Trees.Proto(String('Violin Concerto')), Trees.Proto(String('Double Concerto - A Minor')), Trees.Proto(String('Piano Concerto No. 1 - D Minor')), Trees.Proto(String('Piano Concerto No. 2 - B-Flat Major'))])), Trees.Proto(String('Quartets'), new pyjslib.List([Trees.Proto(String('Piano Quartet No. 1 - G Minor')), Trees.Proto(String('Piano Quartet No. 2 - A Major')), Trees.Proto(String('Piano Quartet No. 3 - C Minor')), Trees.Proto(String('String Quartet No. 3 - B-Flat Minor'))])), Trees.Proto(String('Sonatas'), new pyjslib.List([Trees.Proto(String('Two Sonatas for Clarinet - F Minor')), Trees.Proto(String('Two Sonatas for Clarinet - E-Flat Major'))])), Trees.Proto(String('Symphonies'), new pyjslib.List([Trees.Proto(String('No. 1 - C Minor')), Trees.Proto(String('No. 2 - D Minor')), Trees.Proto(String('No. 3 - F Major')), Trees.Proto(String('No. 4 - E Minor'))]))])), Trees.Proto(String('Mozart'), new pyjslib.List([Trees.Proto(String('Concertos'), new pyjslib.List([Trees.Proto(String('Piano Concerto No. 12')), Trees.Proto(String('Piano Concerto No. 17')), Trees.Proto(String('Clarinet Concerto')), Trees.Proto(String('Violin Concerto No. 5')), Trees.Proto(String('Violin Concerto No. 4'))]))]))]);
		self.fTree = Trees.Tree();
		var __i = pyjslib.range(pyjslib.len(self.fProto)).__iter__();
		try {
			while (true) {
				var i = __i.next();
				
				self.createItem(self.fProto.__getitem__(i));
				self.fTree.addItem(self.fProto.__getitem__(i).item);
			}
		} catch (e) {
			if (e.__name__ != 'StopIteration') {
				throw e;
			}
		}
		self.fTree.addTreeListener(self);
		self.initWidget(self.fTree);
		return null;
	}
	, 1, [null,null,'self']);
	cls_definition.onTreeItemSelected = pyjs__bind_method(cls_instance, 'onTreeItemSelected', function(item) {
		if (this.__is_instance__ === true) {
			var self = this;
		} else {
			var self = arguments[0];
			item = arguments[1];
		}

 		return null;
	}
	, 1, [null,null,'self', 'item']);
	cls_definition.onTreeItemStateChanged = pyjs__bind_method(cls_instance, 'onTreeItemStateChanged', function(item) {
		if (this.__is_instance__ === true) {
			var self = this;
		} else {
			var self = arguments[0];
			item = arguments[1];
		}
		var i,proto,child;
		child = item.getChild(0);
		if (pyjslib.bool(pyjslib.hasattr(child, String('isPendingItem')))) {
			item.removeItem(child);
			proto = item.getUserObject();
			var __i = pyjslib.range(pyjslib.len(proto.children)).__iter__();
			try {
				while (true) {
					var i = __i.next();
					
					self.createItem(proto.children.__getitem__(i));
					item.addItem(proto.children.__getitem__(i).item);
				}
			} catch (e) {
				if (e.__name__ != 'StopIteration') {
					throw e;
				}
			}
		}
		return null;
	}
	, 1, [null,null,'self', 'item']);
	cls_definition.createItem = pyjs__bind_method(cls_instance, 'createItem', function(proto) {
		if (this.__is_instance__ === true) {
			var self = this;
		} else {
			var self = arguments[0];
			proto = arguments[1];
		}

		proto.item = Trees.TreeItem(proto.text);
		proto.item.setUserObject(proto);
		if (pyjslib.bool((pyjslib.cmp(pyjslib.len(proto.children), 0) == 1))) {
			proto.item.addItem(Trees.PendingItem());
		}
		return null;
	}
	, 1, [null,null,'self', 'proto']);
	return pyjs__class_function(cls_instance, cls_definition, 
	                            new Array(Trees.Sink));
})();
Trees.Proto = (function(){
	var cls_instance = pyjs__class_instance('Proto');
	var cls_definition = new Object();
	cls_definition.__md5__ = '1227b4d8a11eea7b2057c57044bca93a';
	cls_definition.__init__ = pyjs__bind_method(cls_instance, '__init__', function(text, children) {
		if (this.__is_instance__ === true) {
			var self = this;
		} else {
			var self = arguments[0];
			text = arguments[1];
			children = arguments[2];
		}
		if (typeof children == 'undefined') children=null;

		self.children = new pyjslib.List([]);
		self.item = null;
		self.text = text;
		if (pyjslib.bool((children !== null))) {
			self.children = children;
		}
		return null;
	}
	, 1, [null,null,'self', 'text', 'children']);
	return pyjs__class_function(cls_instance, cls_definition, 
	                            new Array(pyjslib.object));
})();
Trees.PendingItem = (function(){
	var cls_instance = pyjs__class_instance('PendingItem');
	var cls_definition = new Object();
	cls_definition.__md5__ = '37ac0c6eee00870f542d7758a9bb8eae';
	cls_definition.__init__ = pyjs__bind_method(cls_instance, '__init__', function() {
		if (this.__is_instance__ === true) {
			var self = this;
		} else {
			var self = arguments[0];
		}

		Trees.TreeItem.__init__(self, String('Please wait...'));
		return null;
	}
	, 1, [null,null,'self']);
	cls_definition.isPendingItem = pyjs__bind_method(cls_instance, 'isPendingItem', function() {
		if (this.__is_instance__ === true) {
			var self = this;
		} else {
			var self = arguments[0];
		}

		return true;
	}
	, 1, [null,null,'self']);
	return pyjs__class_function(cls_instance, cls_definition, 
	                            new Array(Trees.TreeItem));
})();
Trees.init = function() {
	var text;
	text = String('GWT has a built-in \x3Ccode\x3ETree\x3C/code\x3E widget. The tree is focusable and has keyboard support as well.');
	return Trees.SinkInfo(String('Trees'), text, Trees.Trees);
};
Trees.init.__name__ = 'init';

Trees.init.__bind_type__ = 0;
Trees.init.__args__ = [null,null,];
return this;
}; /* end Trees */
$pyjs.modules_hash['Trees'] = $pyjs.loaded_modules['Trees'];


 /* end module: Trees */


/*
PYJS_DEPS: ['Sink.Sink', 'Sink', 'Sink.SinkInfo', 'pyjamas.ui.Tree.Tree', 'pyjamas', 'pyjamas.ui', 'pyjamas.ui.Tree', 'pyjamas.ui.TreeItem.TreeItem', 'pyjamas.ui.TreeItem']
*/
