/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 * 
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 * 
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 * 
 * The Original Code is Komodo code.
 * 
 * The Initial Developer of the Original Code is ActiveState Software Inc.
 * Portions created by ActiveState Software Inc are Copyright (C) 2000-2007
 * ActiveState Software Inc. All Rights Reserved.
 * 
 * Contributor(s):
 *   ActiveState Software Inc
 * 
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 * 
 * ***** END LICENSE BLOCK ***** */

// Note that the following is about *textbox*-autocomplete. This has
// nothing to do with Komodo's codeintel system or autocomplete in
// Komodo's editor. These are Komodo's extensions to the stuff in
// "mozilla/toolkit/components/autocomplete".
//
// Some terminology: A koIAutoCompleteSearch instance is created for a
// <textbox type="autocomplete">. To do autocomplete it will call
// `.startSearch(..., listener)`. The searcher will call
// `listener.onSearchResult(result)` where result is a
// koIAutoCompleteResult. A result has zero or more
// koIAutoCompleteMatch's.

#include "nsISupports.idl"
#include "nsIAutoCompleteResult.idl"
#include "nsIAutoCompleteSearch.idl"

[scriptable, uuid(7c101772-567f-47b3-a786-02bb14918b12)]
interface koIAutoCompleteMatch : nsISupports {
    attribute wstring value;
    attribute wstring comment;
    attribute wstring style;
    attribute boolean isDefault;
    attribute wstring image;
};

[scriptable, uuid(abd05075-d511-4669-a4bc-6739389b6126)]
interface koIAutoCompleteResult : nsIAutoCompleteResult {
    void init(in wstring searchString);
    void setIgnored();
    void setFailed(in wstring errorDescription);

    // addMatch() is DEPRECATED, use addMatch2().
    // (Note the similarity to nsIAutoCompleteSimpleResult.appendMatch(...))
    [deprecated] void addMatch(in wstring value, in wstring comment,
                               in wstring style, in boolean isDefault,
                               in wstring image);

    void addMatch2(in koIAutoCompleteMatch match);
};


// Komodo-specific additions to nsIAutoCompleteSearch.
[scriptable, uuid(7487edbd-fe40-a044-963d-6a6c22147430)]
interface koIAutoCompleteSearch : nsIAutoCompleteSearch {
    koIAutoCompleteMatch topMatch(in wstring searchString,
                                  in wstring searchParam);
};


