code: function (settings) {
          var self = this, editor = getActiveEditor(), editorSettings = editor.settings;
          var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;
          var fileType = settings.filetype;
  
          settings.spellcheck = false;
  
          fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;
          if (fileBrowserCallbackTypes) {
            fileBrowserCallbackTypes = Tools.makeMap(fileBrowserCallbackTypes, /[, ]/);
          }
  
          if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {
            fileBrowserCallback = editorSettings.file_picker_callback;
            if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {
              actionCallback = function () {
                var meta = self.fire('beforecall').meta;
  
                meta = Tools.extend({ filetype: fileType }, meta);
  
                // file_picker_callback(callback, currentValue, metaData)
                fileBrowserCallback.call(
                  editor,
                  function (value, meta) {
                    self.value(value).fire('change', { meta: meta });
                  },
                  self.value(),
                  meta
                );
              };
            } else {
              // Legacy callback: file_picker_callback(id, currentValue, filetype, window)
              fileBrowserCallback = editorSettings.file_browser_callback;
              if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {
                actionCallback = function () {
                  fileBrowserCallback(
                    self.getEl('inp').id,
                    self.value(),
                    fileType,
                    window
                  );
                };
              }
            }
          }
  
          if (actionCallback) {
            settings.icon = 'browse';
            settings.onaction = actionCallback;
          }
  
          self._super(settings);
  
          setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);
          setupLinkValidatorHandler(self, editorSettings, fileType);
        }
docs: Constructs a new control instance with the specified settings.
  
  @constructor
  @param {Object} settings Name/value object with settings.