 /* 
  * AT-SPI - Assistive Technology Service Provider Interface 
  * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
  *
  * Copyright 2005 Sun Microsystems, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
  * License as published by the Free Software Foundation; either
  * version 2 of the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
  * License along with this library; if not, write to the
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */

#ifndef __ACCESSIBILITY_COLLECTION_DEFINED__
#define __ACCESSIBILITY_COLLECTION_DEFINED__
 
module Accessibility {
  

  typedef sequence<Accessible> AccessibleSet;

 
     interface MatchRule {
     };


     interface Collection : Bonobo::Unknown {
 
       enum SortOrder {
	    SORT_ORDER_INVALID,
	    SORT_ORDER_CANONICAL, 
	    SORT_ORDER_FLOW, 
	    SORT_ORDER_TAB, 
	    SORT_ORDER_REVERSE_CANONICAL, 
	    SORT_ORDER_REVERSE_FLOW, 
	    SORT_ORDER_REVERSE_TAB, 
	    SORT_ORDER_LAST_DEFINED
       };
   
       enum MatchType {
           MATCH_INVALID, 
           MATCH_ALL, 
           MATCH_ANY, 
	   MATCH_NONE,
	   MATCH_EMPTY,
           MATCH_LAST_DEFINED
	   };

       enum TreeTraversalType {
	 
	 TREE_RESTRICT_CHILDREN,
	 TREE_RESTRICT_SIBLING,
	 TREE_INORDER,
	 TREE_LAST_DEFINED
       };

	boolean isAncestorOf (in Accessible object); 
  
	MatchRule        createMatchRule (in StateSet states,
					  in MatchType statematchtype,
                                          in AttributeSet attributes,
                                          in MatchType attributematchtype,
                                          in RoleSet roles,
					  in MatchType rolematchtype,
                                          in string interfaces,
                                          in MatchType interfacematchtype,
                                          in boolean invert);

	void             freeMatchRule (in MatchRule rule);

	AccessibleSet getMatches (in MatchRule rule,
                                  in SortOrder sortby,
				  in long count,
                                  in boolean traverse); 
       
	AccessibleSet getMatchesTo (in Accessible current_object,
				    in MatchRule rule, 
				    in SortOrder sortby,
				    in TreeTraversalType tree,
				    in boolean recurse,
				    in long count,
				    in boolean traverse);


        AccessibleSet getMatchesFrom (in Accessible current_object,
				      in MatchRule rule, 
				      in SortOrder sortby, 
				      in TreeTraversalType tree,
				      in long count,
				      in boolean traverse);

        Accessible getActiveDescendant ();
        
	void unImplemented ();
	void unImplemented2 ();
        void unImplemented3 ();
        void unImplemented4 ();	
   };
};

#endif
