Concrete.UI.OpenElementDialog = Class.create(Concrete.UI.AbstractDialog, { initialize: function($super, extIdentProvider, options) { var dialogElement = this._createDomElement(); $super(dialogElement, options); this.input = dialogElement.down(".search_box_input"); this.extIdentProvider = extIdentProvider; this.completer = this._createAutoCompleter(); }, _createDomElement: function() { if ($('ct_open_element_dialog')) return $('ct_open_element_dialog'); Element.insert($$('body').first(), { bottom: "" }); return $('ct_open_element_dialog'); }, _createAutoCompleter: function() { var eip = this.extIdentProvider; var completer = new Autocompleter.Local( this.input, this.dialogElement.down(".search_box_list"), [], { partialSearch: true, fullSearch: true, minChars: 0, partialChars: 0, choices: 100, selector: function(completer) { var result = []; var entry = completer.getToken(); for (var i = 0; i < completer.options.array.length && result.length < completer.options.choices ; i++) { var ei = completer.options.array[i]; var identifier = ei.identifier; var foundPos = completer.options.ignoreCase ? identifier.toLowerCase().indexOf(entry.toLowerCase()) : identifier.indexOf(entry); if (foundPos != -1) { result.push("
  • "+ identifier.substr(0, foundPos) + "" + identifier.substr(foundPos, entry.length) + "" + identifier.substr(foundPos + entry.length) + " ["+ei.type+"]
    "+ " "+ei.module+""+ "
  • "); } } return ""; }}); return completer; }, _proceed: function() { if (this.options.onOpenReference) { var value = this.input.value; var splitIndex = value.indexOf(" "); var ident = value.substr(0, splitIndex); var module = value.substr(splitIndex+1, value.length-splitIndex-1); this.options.onOpenReference(module, ident); } }, open: function($super, eis) { $super(); this.input.value = ""; this.completer.options.array = eis; }, });