/* -*- 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 * IBM Corporation. * Portions created by the Initial Developer are Copyright (C) 2004 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Brian Ryner * * 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 ***** */ #include "nsIXFormsModelElement.idl" interface nsIXFormsControl; interface nsISchemaType; interface nsIInstanceElementPrivate; interface nsIDOMNode; /** * Private interface implemented by the model element for other * elements to use. */ [uuid(a6522c1a-a343-4b36-a130-75eb279a667a)] interface nsIModelElementPrivate : nsIXFormsModelElement { /** * Called by form control elements when they are bound to or unbound from * this model. These form controls will be refreshed when refresh() is * called on the model. */ void addFormControl(in nsIXFormsControl control); void removeFormControl(in nsIXFormsControl control); /** * Determine the type for a form control based on the schema included by * this model. */ nsISchemaType getTypeForControl(in nsIXFormsControl control); /** * This function takes an instance data node, finds the type bound to it, and * returns the seperated out type and namespace URI. If no type is set for * the node, then it returns the defaults: "http://www.w3.org/2001/XMLSchema" * and "string" */ void getTypeAndNSFromNode(in nsIDOMNode instancenode, out AString type, out AString namespaceURI); /** * Notification that an instance element has started or finished loading * its instance data. Model contstruction cannot complete until all of * the instances have loaded their data. */ void instanceLoadStarted(); void instanceLoadFinished(in boolean success); /** * Locate the instance element child with the given id. */ nsIInstanceElementPrivate findInstanceElement(in AString id); /** * Set the value of an instance node. */ void setNodeValue(in nsIDOMNode contextNode, in AString nodeValue, out boolean nodeChanged); /** * Get the value of an instance node. */ void getNodeValue(in nsIDOMNode contextNode, out AString nodeValue); /** * Insert a set of nodes underneath an instance node. * @param aContextNode The instance node * @param aNodeContent Node that holds the contents to insert under * the instance node * @param aNodeChanged Indicates whether the contents of the instance * node really did change due to this action */ void setNodeContent(in nsIDOMNode aContextNode, in nsIDOMNode aNodeContent, out boolean aNodeChanged); /** * Validates the instance node against the schemas loaded by the model. */ PRBool validateNode(in nsIDOMNode aInstanceNode); const unsigned short SUBMIT_SERIALIZE_NODE = 1; const unsigned short SUBMIT_SKIP_NODE = 2; const unsigned short SUBMIT_ABORT_SUBMISSION = 3; /** * Handles an instance data node and returns one of the above 3 values. */ unsigned short handleInstanceDataNode(in nsIDOMNode aInstanceDataNode); /** * Set MIP states for given control bound to the given bound node. * @param aControl The control * @param aBoundNode The node the control is bound to */ void setStates(in nsIXFormsControl aControl, in nsIDOMNode aBoundNode); /** * Add an instance element to the model's instance list * @param aInstanceElement The instance element to add to the list */ void addInstanceElement(in nsIInstanceElementPrivate aInstanceElement); /** * Remove an instance element from the model's instance list * @param aInstanceElement The instance element to remove from the list */ void removeInstanceElement(in nsIInstanceElementPrivate aInstanceElement); /** * This attribute is set when the model's instance was lazy authored */ readonly attribute boolean lazyAuthored; /** * This attribute is set when the model handled xforms-ready event */ readonly attribute boolean isReady; /** * Retrieves the type for an instance data node * * @param aInstanceData The instance data node * @param aType The type of the node * @param aNSURI The namespace of the type */ void GetTypeFromNode(in nsIDOMNode aInstanceData, out AString aType, out AString aNSUri); };