/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** 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 Mozilla XForms support. * * The Initial Developer of the Original Code is * Novell, Inc. * Portions created by the Initial Developer are Copyright (C) 2005 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Allan Beaufour * * Alternatively, the contents of this file may be used under the terms of * either of 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 ***** */ /** * This interface is implemented by XForms \ elements, * used to control the ":repeat-index". */ #include "nsISupports.idl" interface nsIXFormsControl; interface nsIDOMNode; [uuid(41a0ea05-3fe0-48e8-8c38-96cbb544309c)] interface nsIXFormsRepeatElement : nsISupports { /** * Set the current index, and return new value. * * @param aIndex The index * @param aIsRefresh Is this part of a refresh event? */ void setIndex(inout unsigned long aIndex, in boolean aIsRefresh); /** * The current index. */ readonly attribute unsigned long index; /** * Deselect current index. */ void deselect(); /** * Sets whether the repeat is a parent to nested repeats */ attribute boolean isParent; /** * Set parent repeat (nested repeats) */ attribute nsIXFormsRepeatElement parent; /** * The tree level of this repeat (nested repeats) */ attribute unsigned long level; /** * Set currently selected repeat and index value (nested repeats) * * @param aCurrentRepeat The current repeat * @param aIndex The current index value */ void setCurrentRepeat(in nsIXFormsRepeatElement aCurrentRepeat, in unsigned long aIndex); /** * Get currently selected repeat row * * @return The current repeat row */ nsIDOMNode getCurrentRepeatRow(); /** * Add user of repeat-index. The control will have Bind() and Refresh() * called on it, when the index changes. */ void addIndexUser(in nsIXFormsControl aControl); /** * Remove user of repeat-index. */ void removeIndexUser(in nsIXFormsControl aControl); /** * Informs repeat-index users of index change. */ void indexHasChanged(); /** * Retrieve the starting index for the repeat, that is the index that the * repeat is initialized to. It is the "startindex" attribute, corrected to * be a valid index value. */ unsigned long getStartingIndex(); /** * Handle insertion of a node, ie. eventually adjust index. Note that the * node might not be influencing the repeat, it is the repeat's * responsibility to check that. * * @param node The node that was inserted */ void handleNodeInsert(in nsIDOMNode node); };